После создания экземпляра 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];
}