仅渲染第一个子网格的Unity3D

时间:2016-12-16 17:17:55

标签: unity3d mesh

我试图通过Unity中的脚本从5个子网格创建我的整个网格。对于每个子网格,我都有一个分离的indice数组和指定的材质。奇怪的是,Unity只渲染第一个子网格,但如果我检查分配给网格过滤器的网格,它会说有更多的顶点和三角形比实际渲染的更多。

    GameObject go = new GameObject("Island Prototype");

    Mesh mesh = new Mesh();
    mesh.vertices = this.vertices.ToArray();
    mesh.subMeshCount = this.indices.Count;

    int c = 0;
    foreach (List<int> l in this.indices)
    {
        Debug.Log(l.Count);
        mesh.SetTriangles(l.ToArray(), c);
        c++;
    }

    mesh.RecalculateNormals();

    List<Material> materials = new List<Material>();
    materials.Add(fieldMaterial);

    foreach (TileSettings ts in tiles)
    {
        materials.Add(fieldMaterial);
    }

    Debug.Log("Number of materials: " + materials.Count);

    //mesh.RecalculateBounds();
    //mesh.RecalculateNormals();

    MeshRenderer mr = go.AddComponent<MeshRenderer>();
    mr.sharedMaterials = materials.ToArray();
    MeshFilter mf = go.AddComponent<MeshFilter>();
    mf.mesh = mesh;

Screenshot 在屏幕截图中,您可以看到网格检查器显示正确的子网格数。渲染器还附有5种材料。 在控制台上我打印了顶点的数量,所以子网格3-5目前还没有三角形,但这不应该是一个问题,不是吗?至少应该渲染子网格2 ......

0 个答案:

没有答案