GameObject A = new GameObject();
A.AddComponent<MeshRenderer>();
A.AddComponent<MeshFilter>();
A.GetComponent<MeshFilter>().mesh.vertices = new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0), new Vector3(1, 0, 0) };
A.GetComponent<MeshFilter>().mesh.triangles = new int[] { 0, 1, 2, 0, 2, 3 };
上面的代码会创建一个紫色的正方形。紫色是默认颜色。
我试图修改颜色:
GameObject A = new GameObject();
A.AddComponent<MeshRenderer>();
A.GetComponent<MeshRenderer>().material.color = Color.white;
A.AddComponent<MeshFilter>();
A.GetComponent<MeshFilter>().mesh.vertices = new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0), new Vector3(1, 0, 0) };
A.GetComponent<MeshFilter>().mesh.triangles = new int[] { 0, 1, 2, 0, 2, 3 };
但运行后,正方形的颜色变成了灰色,而不是白色。
在unity界面中,手动将MeshRenderer的shader设置为Sprite-Default之后,颜色变成了白色。
我不想手动。我试图在代码中设置:
GameObject A = new GameObject();
A.AddComponent<MeshRenderer>();
A.GetComponent<MeshRenderer>().material.shader = Shader.Find("Sprite-Default");
A.GetComponent<MeshRenderer>().material.color = Color.white;
A.AddComponent<MeshFilter>();
A.GetComponent<MeshFilter>().mesh.vertices = new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0), new Vector3(1, 0, 0) };
A.GetComponent<MeshFilter>().mesh.triangles = new int[] { 0, 1, 2, 0, 2, 3 };
但运行后无效。MeshRenderer的shader并没有改变。
我该怎么做?
(注:我在制作一个库,因此我希望能够使用纯代码创建白色正方形、而不使用Sprite。)