Как написать генерацию объектов в Юнити
Мне нужно заполнить игровое поле копиями объекта. Для начала я решил скопировать один объект, но он не отображается(как минимум). Я в Unity новичок и даже не представляю, как работает то, что написал. Можете объяснить, в чём проблема и как правильно это написать. '''
public GameObject cell;
void Start()
{
List<GameObject> a = new List<GameObject>();
a.Add(Instantiate(cell, new Vector3(cell.transform.position.x * 3, cell.transform.position.y, cell.transform.position.z), cell.transform.rotation));
a[0].SetActive(true);
}
'''
Ответы (2 шт):
Автор решения: Pantheon
→ Ссылка
public GameObject original; // сюда в поле инспектора суёшь тот объект который хочешь клонировать
void Start(){
GameObject klon = (GameObject)Instantiate (original); // теперь создан объект klon который полостью соответствует объекту original
}
Автор решения: IluhaRud
→ Ссылка
Я бы сделал это следующим образом, хотя лучше в таких случаях использовать пулы.
public GameObject original;
public List<GameObject> objects = new List<GameObject>();
private void Start()
{
for (int i = 0; i < 100; i++)
CreateObject();
}
private void CreateObject()
{
Vector3 position = original.position;
postion.x += objects.Count;
GameObject go = Instantiate(original, position, original.transform.rotation);
go.SetActive(true);
objects.Add(go);
}
Данный код создаёт 100 объектов, со смещением в 1 метр.