如何通过c#脚本将多种材料分配给游戏对象?
到目前为止,我尝试过的是:
public GameObject go;
public Material Mat1;
public Material Mat2;
void Start()
{
//this does not work
go.GetComponent<Renderer>().materials[0] = Mat1;
}
答案 0 :(得分:1)
您不能直接更新材料,但是需要创建一个新的材料阵列并进行分配。
project
您也可以选中documentation。
请注意,就像Unity返回的所有数组一样,这将返回的副本 材料阵列。如果要更改其中的某些材料,请获取 值,更改条目并放回材料。
答案 1 :(得分:1)
从文档中:
请注意,就像Unity返回的所有数组一样,这将返回物料数组的副本。如果要更改其中的某些物料,请获取值,更改条目并重新设置物料。
Renderer rend = go.GetComponent<Renderer>();
Material [] mats = rend.materials;
mats[0] = Mat1;
rend.materials = mats;
答案 2 :(得分:1)
如果要更改多种材料,则需要更改整个阵列。 因此,您首先创建与当前渲染器长度相同的材质数组:
Material[] newMaterials = renderer.sharedMaterials;
for(int i = 0; i <newMaterials.Length; i++)
{
newMaterials[i] = theMaterialYouWantToSetX;
}
,然后将数组分配给渲染器:
renderer.materials = newMaterials;