Prefab`ы в Unity. Появление в случайном месте
Перешарил поисковые запросы, всё то да ни то.
Закидываю в массив префабы для генерации уровня. После беру случайный префаб из массива и создаю Clone на сцене. Всё бы ничего, но создал я его в canvas, а появляется он просто в пространстве.
Забавный факт в том, что я до этого делал, то же самое, но появилась ошибка в другом месте проекта и я с дуру удалил префабы и скрипты.
Метод для появления префаба
void LoadPrefab()
{
//sourse - класс для хранения данных, arrayPrefabs массив префабов с нужными префабами
sourse.numberPrefab = Random.Range(0, arrayPrefabs.Length - 1);
prefab = Instantiate(arrayPrefabs[sourse.numberPrefab]);
}
Иерархия префаба
Префаб и его размеры
Ситуация, когда вне игры перенёс префаб в canvas
Ситуация, когда создал clone префаба на сцене
Ситуация, когда я ручками его перенёс во время отладки в canvas 1
Ситуация, когда я ручками его перенёс во время отладки в canvas 2 (отдаление)
Ответы (1 шт):
Было бы круто если бы кто-то сказал как это происходит. Почему раньше норм создавались клоны, а сейчас через пидигий
Что я сделал чтобы они появлялись там где нужно:
Подредачил Prefab потому что размеры и scale поменялись на непойми что
Добавил строчки, которые определяют родителя для моего GameObject
Ну и поменял значение Scale на 1, 1, 1, то есть размеры как у бати (Parent) Теперь код: (Перетащил canvas в инспекторе)
private GameObject prefab; //Текущий префаб public Transform canvas; //Батя для префаба
(Поменял положение префаба)
LoadPrefab(); //При загрузке сцены слонируем случайны из списка префаб
prefab.transform.SetParent(canvas, true);
prefab.transform.localScale = new Vector3(1,1,1);




