我之前从未使用过submeshes,但我差点让它们工作。第二次尝试设置meshRenderer材质的mainTexture时,我得到一个'数组索引超出范围'错误。我将subMeshCount设置为2,并尝试在索引0和索引1处应用2个材质。我无法理解索引1如何超出界限。是否有一些代码可以告诉渲染器需要多少材料?感谢您的时间。
编辑:稍微误解了错误日志。
void Update () {
List<Vector3> vertices = new List<Vector3>();
List<int> dirtTriangles = new List<int>();
List<int> grassTriangles = new List<int>();
List<Vector2> uvList = new List<Vector2>();
mesh.Clear ();
//draw faces
addFace(mesh,uvList,vertices,dirtTriangles,DIR.front);
addFace (mesh,uvList,vertices,dirtTriangles,DIR.back);
addFace (mesh,uvList,vertices,dirtTriangles,DIR.left);
addFace (mesh,uvList,vertices,dirtTriangles,DIR.right);
addFace (mesh,uvList,vertices,grassTriangles,DIR.top);
addFace (mesh,uvList,vertices,dirtTriangles,DIR.bottom);
mesh.vertices = vertices.ToArray ();
//mesh.triangles = triangles.ToArray();
mesh.subMeshCount = 2;
mesh.SetTriangles (dirtTriangles.ToArray(),0);
mesh.SetTriangles (grassTriangles.ToArray(),1);
mesh.RecalculateNormals();
mesh.uv = uvList.ToArray();
//set materials
meshRenderer.materials[0].mainTexture = Resources.Load("block_speckled") as Texture;
meshRenderer.materials[1].mainTexture = Resources.Load("block_grass") as Texture; //error
var shader = Shader.Find ("Particles/Alpha Blended");
meshRenderer.materials[0].shader = shader; //not sure if this is correct either
meshRenderer.materials[1].shader = shader;
}
答案 0 :(得分:0)
试试这个:
meshRenderer.materials = new[]
{
new Material(Shader.Find("Your/Shader")),
new Material(Shader.Find("Your/Shader"))
}
meshRenderer.materials[0].mainTexture = Resources.Load("AssetName") as Texture;
meshRenderer.materials[1].mainTexture = Resources.Load("AssetName") as Texture;