Создание оригинального Prefab на основе уже существующего Prefab в игре - PullRequest
0 голосов
/ 25 мая 2019

Я использую Prefabs для игровых уровней.Чтобы отладить уровень, я просто перетаскиваю префаб в представление Hierarchy и нажимаю [play].

Чтобы протестировать уровень, мне нужна опция, чтобы воспроизвести префаб, но так как я перетаскиваю его в Hierarchy, мне нужен способ захватитьПервоначальный сборный и создайте его снова.(и уничтожить текущий активный префаб).

Чтобы найти текущий активный префаб при воспроизведении, я просто использую:

GameObject gameObj= GameObject.FindWithTag("Level");

Как получить оригинальный префаб и снова создать его при нажатии «REPLAY»(кнопка для перезагрузки префаба).

Я пытался использовать GetCorrespondingObjectFromOriginalSource https://docs.unity3d.com/ScriptReference/PrefabUtility.GetCorrespondingObjectFromOriginalSource.html Это всегда будет возвращать ноль.

1 Ответ

1 голос
/ 26 мая 2019

Объекты в сцене не имеют ссылок на префабы, которые они получают во время выполнения.Unity нарушает эти ссылки, когда сцена запущена (или построена).PrefabUtility - это класс, предназначенный только для редактора, для написания кода редактора.

Если вы хотите сделать что-то подобное, я бы предложил создать другой сценарий, содержащий ссылку на префаб, в котором вы хотите создать его. Затем этот сценарий можетСоздавайте этот сборный объект в качестве ребенка при запуске игры (в режиме «Пробуждение» или «Запуск»), и на нем может быть метод для уничтожения экземпляра и его повторного создания, когда вы хотите перезапустить свой уровень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...