以编程方式显示GameObject的问题Unity C#

时间:2016-06-10 02:32:26

标签: c# unity3d

我试图通过仅使用顶点和面创建网格来以编程方式创建gameObject。 GameObject已创建,但我看不到任何显示的内容。我已经搜索了这个问题,但没有找到任何令人满意的答案。我有另一个问题,即我知道面中的顶点应该是顺时针方向,但这意味着什么?例如,假设我有一个顶点索引为5,6,7的面,那么我首先访问顶点数组并检查每个顶点所在的位置并在faces数组中以顺时针方式排列它们的索引吗?也许我在这方面出错了,但我尝试以各种方式在'Faces'数组中排列顶点索引,但它仍然无效。

    // Vertices is a double array
    mesh.vertices = Vertices.ToArray();
    // Faces is an int array
    mesh.triangles = Faces.ToArray();

    mesh.RecalculateNormals();

    mesh.RecalculateBounds();

    mesh.name = "Imported Model";


    model = new GameObject("Model");

    MeshFilter meshFilter = model.AddComponent<MeshFilter>();

    meshFilter.mesh = mesh;

    model.AddComponent(typeof(MeshRenderer));

提前致谢。

1 个答案:

答案 0 :(得分:0)

没有人能看到你VerticesFaces的样子,所以我不排除那里的问题。

我现在看到的唯一问题是没有添加着色器。如果您没有为网格添加着色器,场景视图中以紫色显示,但它将不可见 游戏视图

代码的最后一行:

model.AddComponent(typeof(MeshRenderer));

应扩展为:

MeshRenderer renderer = model.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
renderer.material.shader = Shader.Find("Particles/Additive");

现在应该显示您的网格。否则,您的顶点,三角形在您的问题中未发布时出现问题。没有视觉图像,理解顺时针的东西很难。这个guy在youtube上用真正的标签框解释它是最好的,我建议你在做任何评论之前先看一下。