Создать префабы
Чтобы создать и использовать префабы в вашем проекте, вы должны выполнить следующие действия:
Создание ассета префаб
Чтобы создать ресурс префаб, выполните следующие действия:
- Создать GameObject и настроить его положение, масштаб, вращение, компоненты и другие свойства по мере необходимости.
- Перетащите GameObject в
Assetsпапка в Project окно. Вы можете по желанию выбрать более одного GameObject для создания нескольких префаб ассетов.
Затем Unity создает ресурс префаб из ресурса GameObject, всех его компонентов и дочернего ресурса GameObjects. Первоначальный ресурс GameObject становится экземпляром вновь созданного ресурса префаб.
Assets, объект Health Pack сохраняется как файл .prefab, и оригинальный GameObject становится экземпляром ассета префаб. Inspector отображает сведения об ассете Health Pack префаб.Если вы перетащите несколько GameObjects, которые еще не являются префабы, в окно Project, Unity создаст новые префаб ассеты для каждого из них без каких-либо дополнительных действий. Однако, если любой из GameObjects является существующим вариантом префабы или префаб варианта, Unity отобразит диалог, в котором вас попросят подтвердить, хотите ли вы создать новые префаб ассеты или новые варианты из GameObjects.
Заменить ассет префаб
Вы можете заменить ассет префаб экземпляром GameObject или префаб, который находится в окне Hierarchy. Чтобы заменить ассет префаб:
- Выберите GameObject или префаб в окне Hierarchy.
- Перетащите его на существующий ресурс префаб в окне Project.
Если содержимое экземпляра GameObject или префаб отличается от содержимого ассета префаб, то Unity отображает диалоговое окно с подтверждением намерения заменить ассет префаб.
Unity пытается сохранить ссылки на префаб и отдельные части префаб, такие как дочерние GameObjects и компоненты. Чтобы сделать это, он сопоставляет имена GameObjects между новым префаб и существующим префаб, который вы заменяете.
Потому что Unity выполняет это сопоставление только по имени, если существует несколько GameObjects с тем же названием в префаб иерархии ассета, соответствие непредсказуемо. Поэтому, чтобы обеспечить Unity сохраняет ссылки при сохранении над существующим префаб, убедитесь, что все GameObjects в рамках префаб имеют уникальные имена.
Unity ведет себя аналогичным образом, если GameObject имеет более одного компонента одного и того же типа, присоединенного к нему.
Создание экземпляра префаб
Чтобы создать экземпляр ассета префаб:
- Выберите ресурс префаб в окне Project.
- Перетащите ассет префаб в представление Hierarchy или Scene.
Также можно создавать экземпляры префабы во время выполнения с помощью скриптов. Дополнительные сведения см. в разделе Создание экземпляра префабы.
Заменить a префаб экземпляра префаб ассеты
Вы можете заменить префаб родитель экземпляра префаб ассета, сохраняя при этом позицию, вращение и масштаб экземпляра. Unity объединяет содержание новых префаб ассета и сохраняет любые переопределения и ссылки с помощью соответствия имен.
Ассет префаб можно заменить следующим образом:
- В течение Inspector для экземпляра префаб:
- Перетащите ассет префаб из окна Project в поле Префаб в Inspector.
- Если префаб имеется переопределения, Unity отображает контекстное меню, и вы можете выбрать либо Заменить и сохранить переопределения сохранить любые переопределения, или Заменить и отбросить любые переопределения.
- В окне Hierarchy:
- Щелкните правой кнопкой мыши экземпляр префаб или GameObject.
- Выберите Префаб > Заменитьили Заменить и сохранить переопределения, чтобы сохранить переопределения.
- Появится окно Select GameObject, и вы сможете выбрать ассет префаб, которым хотите заменить его.
- В окне Project:
- Удерживайте нажатой клавишу Ctrl (macOS: Command) и перетащите ассет префаб на экземпляр префаб или GameObject в экземпляре Hierarchy.
- В контекстном меню выберите Заменитьили Заменить и сохранить переопределения для сохранения переопределений.
Также можно использовать методы PrefabUtility.ReplacePrefabAssetOfPrefabInstance для управления этим поведением в скриптах.