Unity 6.3
0 онлайн 13 гостей 3 в системе
Вход

Переопределение экземпляров префаб

Свойства и компоненты экземпляра префаба можно переопределять, создавая различия между экземплярами и сохраняя при этом их связь с одним ассетом префаба. Например, вы можете создать несколько экземпляров одного персонажа, переопределить значение скорости и назначить каждому свой аудиоклип.

Если вы измените в экземпляре префаба что-либо из перечисленного ниже, Unity сочтёт это переопределением:

  • Значения свойства.
  • Добавление или удаление компонента.
  • Добавление или удаление дочернего GameObject.

Если вы измените или удалите скрипты, объявляющие значение переопределения экземпляра, такое переопределение станет неиспользуемым. О том, как удалить неиспользуемые данные переопределений, см. Удалить неиспользуемые данные переопределения.

Появление переопределений в редакторе

Unity обозначает переопределения синей линией слева от окна Inspector. Любые добавленные или удаленные компоненты имеют значок плюс или минус на своем значке.

A prefab instance Inspector with an added Box Collider component as an override, indicated with a plus badge on its icon (highlighted). The Max Health property on the Health script also has an override, indicated in bold and with a blue line to the left of the property.
Инспектор экземпляра префаба с добавленным в качестве переопределения компонентом Box Collider; на его значке виден плюс (выделено). У свойства Max Health скрипта Health также есть переопределение — оно выделено полужирным и отмечено синей линией слева.

В Hierarchy, любые добавленные объекты имеют значок плюс на их значках.

The Hierarchy window showing a Prefab instance with a child prefab instance called Banana added as an override.
Окно Hierarchy с экземпляром префаба, к которому в качестве переопределения добавлен дочерний экземпляр префаба с именем Banana.

Поведение переопределений

Переопределенное значение свойства в экземпляре префаб всегда имеет приоритет перед значением из ассета префаб. Это означает, что изменение свойства в ассете префаб не влияет на экземпляры, в которых это свойство переопределено.

Если вы редактируете ассет префаб, и некоторые экземпляры не обновляются, как ожидалось, проверьте, не переопределено ли это свойство в этих экземплярах. Если в вашем проекте много переопределений экземпляров, может быть трудно отслеживать, какие изменения вступили в силу, поэтому рассмотрите возможность использования вариантов префаб для более управляемых вариаций.

Transform переопределения

Экземпляр префаб Позиция и Ротация свойства всегда отличаются от свойств корневого ассета префаба и не считаются явным переопределением. Дело в том, что в большинстве проектов разные экземпляры префаба должны находиться в разных позициях и иметь разные повороты по сравнению с исходным ассетом, поэтому Unity не считает это переопределением.

Для прямоугольника Transform, Ширина, Высота, Разница, Якорь и Пивот свойства не считаются переопределениями.

Применить переопределения к ассету префаб

Вы можете использовать Переопределение выпадающий список, чтобы навсегда применить данные переопределения к корневому ассету префаба этого экземпляра и отбросить переопределение. Можно также вернуть экземпляр к исходным настройкам ассета префаба.

Окно Inspector экземпляра префаб с выбранным меню Переопределение.
Окно Inspector экземпляра префаб с выбранным меню Переопределение.

Чтобы применить или отменить изменения в ресурсе префаб:

  1. Выберите экземпляр префаб в Hierarchy.
  2. В Inspector выберите Переопределение.
  3. Переопределения можно применять или возвращать следующими способами.
    • Чтобы применить или вернуть все переопределения к ресурсу префаб, выберите Применить все или Вернуть все.
    • Чтобы применить или отменить набор переопределений в ассете префаба, щёлкните по переопределению, а затем выделите нужные с помощью Ctrl (на macOS — Command) или Shift. После этого выберите Применить выбранное или Вернуть выбранное.
    • Чтобы применить или отменить отдельное переопределение, выделите его и выберите Вернуть или Применить. В зависимости от контекста вы можете применить переопределение либо к ассету префаба, либо к Вариант префаб.

Если имеются неиспользуемые переопределения на любых выбранных объектах, Переопределения в раскрывающемся списке отображается опция, которая позволяет удалить их.

Применение индивидуальных переопределений с помощью контекстного меню

Вы также можете вернуть или применить отдельные переопределения к ресурсу префаб с помощью контекстного меню в Inspector или Hierarchy. Для этого:

  • Для добавленных, удаленных или измененных компонентов выберите меню Дополнительно (три точки) и затем выберите Добавлен компонент, Удалён компонентили Измененный компонент. Затем выберите Возврат или Применить.
  • Для отдельных свойств щелкните правой кнопкой мыши свойство и выберите Применить или Отменить.
  • Для добавления GameObjects, щелкните правой кнопкой мыши объект в Hierarchy и затем выберите Добавлено GameObject > Применить или Вернуть.

Параметры, доступные в контекстных меню, зависят от типа префаб. Например, если экземпляр префаб имеет вложенные префаб, вы можете использовать контекстное меню для применения переопределений либо к ассету префаб вложенного экземпляра префаб, либо к ассету префаб корневого экземпляра префаб. Аналогичным образом, если вы создали Вариант префаб, вы можете применить переопределение либо к варианту префаба, либо к исходному ассету префаба.

Дополнительные ресурсы