Объединение экземпляров пефаба
Не могу найти что-то по своему вопросу, может кто-то сможет подсказать. Есть префаб, в котором есть n-ное количество экземпляров этого префаба на сцене, которые спавнятся в рандомных координатах и вращаются вокруг своей оси в разные стороны с разной скоростью. Вызываются они циклом while:
Instantiate(prefab, new Vector3(ncorx, 0, ncorz), Quaternion.identity);
В итоге на сцене появляется 20 экземпляров. Можно ли как-то обьединить все эти экземпляры таким образом, чтобы их все вместе можно было сдвинуть на нужную величину в нужном направлении.
Ответы (1 шт):
Функция Instantiate возвращает вам The instantiated clone созданного объекта, т.е. ссылку на созданный объект.
Вы можете положить это значение в переменную, а можете создать список List, в который будете динамически добавлять созданный объект:
List<GameObject> objects = new List<GameObject>();
GameObject newObj = Instantiate(...);
objects.Add(newObj);
Так как объекты со сцены могут удаляться, то можно еще, если на префаб повесить скрипт, который будет сам добавлять этот собственный объект в лист или удалять:
ScriptWithList script;
void Start () {
script.objects.Add(gameObject);
}
void OnDestroy () {
script.objects.Remove(gameObject);
}
А c элементами list'а можете работаете через for, foreach - как хотите:
for (int i = 0; i < objects.Count(); i++) {
print(objects[i]);
}
foreach (var obj in objects) {
print(obj;)
}