Я создаю то, что по сути является моей собственной сборной системой. Игровые объекты определяются читаемым человеком файлом данных. Я хотел бы создать пустой 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)
- лучший способ создать что-то вроде пула объектов. Это не совсем то, что вы хотите, но, возможно, у вас может быть небольшая группа неактивных объектов, которые впоследствии будут клонированы для вашей пользовательской реализации.