Я пытаюсь создать всю свою сетку из 5 подсетей с помощью скрипта в Unity. Для каждой подсетки у меня есть отдельный массив индексов и назначенный материал. Любопытно, что 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;
На скриншоте видно, что инспектор мешей говорит правильное количество подсетей. Также к рендереру прикреплено 5 материалов. В консоли я напечатал количество вершин, поэтому подсетка 3-5 в данный момент не владеет треугольниками, но это не должно быть проблемой, не так ли? По крайней мере, submesh 2 должен быть отрендерен...
subMeshCount
просто для того, чтобы убедиться, что API Unity не сбрасывает его где-то, и (2) Unity заботится о том, по часовой стрелке или против часовой стрелки расположены ваши треугольники (объяснение). - person rutter   schedule 16.12.2016break
, который испортил индексы подсетей... - person Vetterjack   schedule 18.12.2016