Переопределение экземпляров префаб
Свойства и компоненты экземпляра префаба можно переопределять, создавая различия между экземплярами и сохраняя при этом их связь с одним ассетом префаба. Например, вы можете создать несколько экземпляров одного персонажа, переопределить значение скорости и назначить каждому свой аудиоклип.
Если вы измените в экземпляре префаба что-либо из перечисленного ниже, Unity сочтёт это переопределением:
- Значения свойства.
- Добавление или удаление компонента.
- Добавление или удаление дочернего GameObject.
Если вы измените или удалите скрипты, объявляющие значение переопределения экземпляра, такое переопределение станет неиспользуемым. О том, как удалить неиспользуемые данные переопределений, см. Удалить неиспользуемые данные переопределения.
Появление переопределений в редакторе
Unity обозначает переопределения синей линией слева от окна Inspector. Любые добавленные или удаленные компоненты имеют значок плюс или минус на своем значке.
В Hierarchy, любые добавленные объекты имеют значок плюс на их значках.
Поведение переопределений
Переопределенное значение свойства в экземпляре префаб всегда имеет приоритет перед значением из ассета префаб. Это означает, что изменение свойства в ассете префаб не влияет на экземпляры, в которых это свойство переопределено.
Если вы редактируете ассет префаб, и некоторые экземпляры не обновляются, как ожидалось, проверьте, не переопределено ли это свойство в этих экземплярах. Если в вашем проекте много переопределений экземпляров, может быть трудно отслеживать, какие изменения вступили в силу, поэтому рассмотрите возможность использования вариантов префаб для более управляемых вариаций.
Transform переопределения
Экземпляр префаб Позиция и Ротация свойства всегда отличаются от свойств корневого ассета префаба и не считаются явным переопределением. Дело в том, что в большинстве проектов разные экземпляры префаба должны находиться в разных позициях и иметь разные повороты по сравнению с исходным ассетом, поэтому Unity не считает это переопределением.
Для прямоугольника Transform, Ширина, Высота, Разница, Якорь и Пивот свойства не считаются переопределениями.
Применить переопределения к ассету префаб
Вы можете использовать Переопределение выпадающий список, чтобы навсегда применить данные переопределения к корневому ассету префаба этого экземпляра и отбросить переопределение. Можно также вернуть экземпляр к исходным настройкам ассета префаба.
Чтобы применить или отменить изменения в ресурсе префаб:
- Выберите экземпляр префаб в Hierarchy.
- В Inspector выберите Переопределение.
- Переопределения можно применять или возвращать следующими способами.
- Чтобы применить или вернуть все переопределения к ресурсу префаб, выберите Применить все или Вернуть все.
- Чтобы применить или отменить набор переопределений в ассете префаба, щёлкните по переопределению, а затем выделите нужные с помощью Ctrl (на macOS — Command) или Shift. После этого выберите Применить выбранное или Вернуть выбранное.
- Чтобы применить или отменить отдельное переопределение, выделите его и выберите Вернуть или Применить. В зависимости от контекста вы можете применить переопределение либо к ассету префаба, либо к Вариант префаб.
Если имеются неиспользуемые переопределения на любых выбранных объектах, Переопределения в раскрывающемся списке отображается опция, которая позволяет удалить их.
Применение индивидуальных переопределений с помощью контекстного меню
Вы также можете вернуть или применить отдельные переопределения к ресурсу префаб с помощью контекстного меню в Inspector или Hierarchy. Для этого:
- Для добавленных, удаленных или измененных компонентов выберите меню Дополнительно (три точки) и затем выберите Добавлен компонент, Удалён компонентили Измененный компонент. Затем выберите Возврат или Применить.
- Для отдельных свойств щелкните правой кнопкой мыши свойство и выберите Применить или Отменить.
- Для добавления GameObjects, щелкните правой кнопкой мыши объект в Hierarchy и затем выберите Добавлено GameObject > Применить или Вернуть.
Параметры, доступные в контекстных меню, зависят от типа префаб. Например, если экземпляр префаб имеет вложенные префаб, вы можете использовать контекстное меню для применения переопределений либо к ассету префаб вложенного экземпляра префаб, либо к ассету префаб корневого экземпляра префаб. Аналогичным образом, если вы создали Вариант префаб, вы можете применить переопределение либо к варианту префаба, либо к исходному ассету префаба.