Я створюю те, що по суті є моєю власною збірною системою. Ігрові об’єкти визначаються за допомогою файлу даних, читаних людиною. Я хотів би створити порожній GameObject, завантажити його з компонентами, визначеними у файлі даних, і мати його готовим і чекати Instantiate()
дзвінка. Однак щоразу, коли я використовую GameObject go = new GameObject()
новий ігровий об’єкт, додається на сцену.
Використовуючи Unity, вбудований у збірники, я можу завантажити збірник як GameObject, і він не додається до сцени. (Див. Приклад нижче)
Обґрунтуванням цього є те, що я хотів би мати один список, який містить GameObjects, деякі створені завантаженням збірок Unity, а інші створені моєю власною спеціальною системою збірок. Це має відбуватися під час запуску, і не може залучати редактор Unity (оскільки в ідеалі кінцеві користувачі зможуть визначити власні файли даних).
Як я можу створити новий GameObject, без Unity автоматично для нього?
Наприклад, я можу зробити такий дзвінок:
Resources.LoadAll("PrefabsDirectory", typeof(GameObject))
І я отримаю список GameObjects, жоден з яких не додається на сцену під час дзвінка. По суті, я створюю LoadAll
метод для власних збірок, і так само я не хочу інстанціювати GameObjects під час виклику.
Destroy
на GameObject. Що знімає його зі сцени і звільняє, роблячи його непридатним.
go.SetActive(false)
- найкращий спосіб створити щось на зразок об’єкта пулу. Це не зовсім те, що ви хочете, але, можливо, у вас може бути невелика група неактивних об'єктів, які пізніше клонуються для вашої власної інстанції.