I have a mesh, which need to use a lot of textures for each face.
My mesh has got like 2048 faces. Since mesh face should be represented as int array, there is a List with 6144 elements(2048*3).
I have used the following code:
var m = new Material[] {
Resources.Load("mat1") as Material,
Resources.Load("mat2") as Material,
Resources.Load("mat3") as Material
};
secondLayer[j] = new GameObject();
secondLayer[j].AddComponent<MeshFilter>();
secondLayer[j].AddComponent<MeshRenderer>();
secondLayer[j].AddComponent<MeshCollider>();
secondLayer[j].GetComponent<Renderer>().materials = m;
secondLayer[j].name = "2nd_Mesh_#" + j;
var sMesh = secondLayer[j].GetComponent<MeshFilter>().mesh;
sMesh.Clear();
sMesh.vertices = sVertex;
sMesh.uv = sUv;
//sMesh.triangles = sFace.ToArray();
sMesh.subMeshCount = sFace.Count / 3;
var k = 0;
for (int i = 0; i < sFace.Count; i++)
{
if (k >= sFace.Count)
break;
int[] tmp = { sFace[k], sFace[k + 1], sFace[k + 2]};
sMesh.SetTriangles(tmp, i);
k += 3;
}
sMesh.RecalculateNormals();
However, it does render only 3 of faces.
And if i uncomment line
sMesh.triangles = sFace.ToArray();
And comment SetTriangles, it does render everything:
Also, while debugging i noticed correct subMeshCount and Triangles array size(2048).
What I’m doing wrong?

