我该如何通过C#脚本为一个游戏对象分配多个材质?
到目前为止我尝试过的方法有:
public GameObject go;
public Material Mat1;
public Material Mat2;
void Start()
{
//this does not work
go.GetComponent<Renderer>().materials[0] = Mat1;
}
我该如何通过C#脚本为一个游戏对象分配多个材质?
到目前为止我尝试过的方法有:
public GameObject go;
public Material Mat1;
public Material Mat2;
void Start()
{
//this does not work
go.GetComponent<Renderer>().materials[0] = Mat1;
}
void Start()
{
//create your materials
var yourMaterials = new Material[] { Mat1, Mat2 };
//assign it
go.GetComponent<Renderer>().materials = yourMaterials ;
}
您还可以查看文档。
请注意,像Unity返回的所有数组一样,这将返回材质数组的副本。如果您想更改其中的一些材料,请获取该值,更改一个条目,然后将材料设置回去。
从文档中得知:
请注意,与Unity返回的所有数组一样,这也返回材质数组的副本。如果您想更改其中的一些材料,请获取该值,更改条目并将材料设置回去。
Renderer rend = go.GetComponent<Renderer>();
Material [] mats = rend.materials;
mats[0] = Mat1;
rend.materials = mats;
Material[] newMaterials = renderer.sharedMaterials;
for(int i = 0; i <newMaterials.Length; i++)
{
newMaterials[i] = theMaterialYouWantToSetX;
}
然后将数组分配给渲染器:
renderer.materials = newMaterials;