Сборные варианты полезны, когда вы хотите иметь набор предопределенных вариантов Prefabтипа объекта, который позволяет хранить GameObject вместе с компонентами и свойствами. Префаб действует как шаблон, из которого вы можете создавать новые экземпляры объектов в сцене. Подробнее
См. в Словарь.
Например, вы можете захотеть иметь в игре несколько разных типов целей GermSlimeTarget, основанных на одном и том же базовом префабе GermSlimeTarget. Однако вы можете захотеть, чтобы некоторые GermSlimeTargets несли предметы, некоторые двигались с разной скоростью, а некоторые издавали дополнительные звуковые эффекты.
Для этого вы можете настроить свой первоначальный префаб GermSlimeTarget для выполнения всех основных действий, которые вы хотите использовать для всех GermSlimeTarget, а затем вы можете создать несколько вариантов префаба для:
- Заставьте GermSlimeTarget двигаться быстрее, используя переопределение свойства в скрипте, чтобы изменить его скорость.
- Заставьте GermSlimeTarget нести предмет, присоединив дополнительный GameObjectосновной объект в сценах Unity, который может представлять персонажи, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь его руку. - Дайте GermSlimeTarget шумоподавитель, похожий на слизь, добавив компонент AudioSource, который воспроизводит звук хлюпанья.
Вариант префаба наследует свойства другого префаба, называемого базовым. Переопределения, сделанные для варианта префаба, имеют приоритет над значениями базового префаба. Вариант префаба может иметь в качестве основы любой другой префаб, включая префабы модели или другие варианты префаба.
Создание готового варианта
Существует несколько способов создать вариант префаба на основе другого префаба.
Вы можете щелкнуть правой кнопкой мыши префаб в представлении проекта и выбрать Создать > Вариант префаба. Это создает вариант выбранного префаба, который изначально не имеет никаких переопределений. Вы можете открыть Prefab Variant в Prefab Mode, чтобы начать добавлять к нему переопределения.
Вы также можете перетащить экземпляр Prefab из иерархии в окно проектаокно, которое показывает содержимое папки Активы
(вкладка "Проект") Подробнее
См. в Словарь. Когда вы сделаете это, диалоговое окно спросит, хотите ли вы создать новый исходный префаб или вариант префаба. Если вы выберете Prefab Variant, вы получите новый Prefab Variant, основанный на экземпляре Prefab, который вы перетащили. Любые переопределения, которые у вас были в этом экземпляре, теперь находятся внутри нового Prefab Variant. Вы можете открыть его в предварительном режиме, чтобы добавить дополнительные переопределения, изменить или удалить переопределения.
Варианты Prefab отмечены синим значком Prefab со стрелками.
Редактирование варианта сборки
Когда вариант Prefab открывается в режиме Prefab, корень отображается как экземпляр Prefab с синим значком Prefab. Этот экземпляр префаба представляет собой базовый префаб, от которого наследуется вариант префаба; он не представляет сам Prefab Variant. Любые изменения, которые вы вносите в готовый вариант, переопределяют эту базу, существующую в этом варианте.
На снимке экрана выше, если бы вы выбрали корневой игровой объект GermSlimeTarget With GermOBlaster и нажали кнопку Выбрать в ИнспекторОкно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и редактировать значения. Дополнительная информация
Смотрите в Словарь, он выберет базовый Prefab GermSlimeTarget а не Вариант GermSlimeTarget With GermOBlaster, потому что экземпляр Prefab является экземпляром базового Prefab GermSlimeTarget и кнопка Select всегда выбирает Prefab Ресурс, из которого происходит экземпляр.
Как и в случае с любым экземпляром префаба, в варианте префаба можно использовать переопределения префаба, такие как измененные значения свойств, добавленные компоненты, удаленные компоненты и добавленные дочерние игровые объекты. Существуют также те же ограничения: вы не можете изменить родительские объекты GameObject в Prefab Variant, которые происходят из его базового Prefab. Вы также не можете удалить GameObject из Prefab Variant, который существует в его базовом Prefab. Однако вы можете деактивировать GameObjects (в качестве переопределения свойства), чтобы добиться того же эффекта, что и при удалении GameObject.
Примечание. При редактировании Prefab Variant в Prefab Mode вы должны понимать, что применение этих переопределений (через раскрывающееся окно Overrides или контекстные меню) приведет к тому, что варианты вашего варианта будут применены к базовый сборный актив. Часто это не то, что вам нужно. Смысл Prefab Variant состоит в том, чтобы обеспечить удобный способ хранения значимой и многократно используемой коллекции переопределений, поэтому обычно они должны оставаться в качестве переопределений и не применяться к базовому Prefab Asset. Чтобы проиллюстрировать этот момент, если вы примените дополнительный игровой объект GermOBlaster к базовому сборному ресурсу («GermSlimeTarget»), то сборный ресурс также будет иметь GermOBlaster. Весь смысл варианта GermSlimeTarget With GermOBlaster заключается в том, что только этот вариант содержит GermOBlaster, поэтому добавленный игровой объект GermOBlaster следует оставить в качестве переопределения внутри варианта Prefab. р>
Когда вы открываете раскрывающееся окно "Переопределения", вы всегда можете увидеть в его заголовке, к какому объекту относятся переопределения и в каком контексте они существуют. Для Prefab Variant в заголовке будет указано, что переопределения относятся к базовому Prefab и существуют в Prefab Variant. Чтобы было понятнее, на кнопке Применить все также указано Применить все к базе.
Добавлены вложенные префабы и варианты префабов в Unity 2018.3