实例化 GameObject 后,从中获取 MeshRenderer,然后更改其材质:
public GameObject eggPrefab;
public Vector3 spawnPos;
public Material mat;
void Start()
{
GameObject obj = Instantiate(eggPrefab, spawnPos, Quaternion.identity);
obj.GetComponent<MeshRenderer>().material = mat;
}
如果您没有材质,则可以使用着色器创建一个并将其分配给 MeshRenderer:
GameObject obj = Instantiate(eggPrefab, spawnPos, Quaternion.identity);
//Find the Standard Shader
Material mat = new Material(Shader.Find("Standard"));
//Set Texture on the material
//mat.SetTexture("_MainTex", yourTexture);
obj.GetComponent<MeshRenderer>().material = mat;
最后,如果您有多个材质,则使用materials 属性而不是material 属性并将您的材质数组分配给它:
GameObject obj = Instantiate(eggPrefab, spawnPos, Quaternion.identity);
//Find the Standard Shader
Material mat = new Material(Shader.Find("Standard"));
//Set Texture on the material
//mat.SetTexture("_MainTex", yourTexture);
//Create array of mats (Create one for example)
Material[] mats = new Material[1];
mats[0] = mat;
obj.GetComponent<MeshRenderer>().materials = mats;
编辑:
我错过了随机部分。如果要随机选择材质,只需使用Random.Range 从材质数组中选择一项即可。
public GameObject eggPrefab;
public Vector3 spawnPos;
public Material[] mats;
void Start()
{
GameObject obj = Instantiate(eggPrefab, spawnPos, Quaternion.identity);
int matIndex = UnityEngine.Random.Range(0, mats.Length);
obj.GetComponent<MeshRenderer>().material = mats[matIndex];
}