Приветствую всех друзья! В прошлой статье мы начали разбираться с тем что такое префабы в Unity и как с ними работать. Сегодня мы продолжим изучение префабов на более глубоком уровне.
Редактирование префаба через его экземпляр.
Редактировать сам ассет префаба можно также и через его экземпляр на сцене. При выборе экземпляра префаба в окне иерархии или на сцене, в верхней части окна инспектора появляются 3 кнопки Open, Select и Overrides.
Давайте немного подробнее разберемся с тем что делают эти кнопки:
1. Open – открывает редактор префаба
2. Select – выбирает ассет префаба в окне проекта
3. Overrides – при нажатии открывается список переопределённых свойств, а в самом низу списка кнопки Revert/Apply All для отмены и принятия всех изменений. Также в этом списке мы можем выбирать любое измененное свойство кликнув на него мышкой и, либо принять его нажав Apply, либо отменить по средствам кнопки Revert.
Вложенные префабы.
Вы можете вкладывать экземпляры префаба внутрь других префабов. Такие префабы называются вложенными. Вложенные префабы сохраняют связь со своим ассетом префаба, а также являются частью другого префаба.
Добавить вложенный префаб также просто, как и обычный, нужно просто перетянуть его мышкой из окна проекта на экземпляр префаба который уже находится в окне иерархии, тем самым он станет дочерним по отношению к этому префабу, а значит вложенным. Рекомендую делать это в окне редактирования префабов. Если вы добавите его просто в сцене, тогда нужно будет переопределить свойства префаба.
Варианты префабов.
Варианты префабов нужны для того чтобы сделать базовый префаб (например платформу танка), а затем добавить на его основе варианты с разными башнями. Сделать вариант префаба можно несколькими способами. Вы можете щелкнуть правой кнопкой мыши по ассету префаба в окне проекта и выбрать пункт Create/ Prefab Variant. Это создаст вариант выбранного префаба, который изначально не имеет никаких переопределений. Вы можете открыть вариант префаба в редакторе префабов чтобы начать добавлять переопределения.
Другим способом добавления варианта префаба является перетаскивание из окна иерархии экземпляра префаба в окно проекта. При этом выскочит всплывающее окно, спрашивающее желаете ли вы сделать новый ассет префаба или же вариант префаба который уже существует.
На варианты префаба действуют те же ограничения и правила переопределения свойств, что и для обычного префаба.
Весь смысл использования вариантов сводится к удобному хранению переопределенных префабов на основе базового префаба. Изменяя базовый префаб вы также измените базовые свойства в вариантах, но добавляя вариантам новые свойства вы не изменяете базовый префаб.
Переопределение на различных уровнях.
Когда вы работаете с префабами внутри других префабов, или с вариантами префабов, переопределения могут существовать на различных уровнях, и одни и те же переопределения могут иметь несколько различных префабов, к которым они могут быть применены.
Когда у вас есть экземпляр префаба, который имеет вложенные префабы внутри себя, или который является вариантом префаба, у вас может быть выбор, к какому префабу должно быть применено переопределение.
Например, если мы имеет префаб стол в который вложен префаб ваза, и для этой вазы мы добавим новый компонент, то при открытии контекстного меню (правой кнопкой мыши по добавленному компоненту) у нас будет выбор применить это изменение к префабу стола или же к префабу вазы.
Распаковка экземпляра префаба.
Распаковка префаба является противоположностью его создания. Вы можете распаковать экземпляр префаба находящийся на сцене (или вложенный в префаб) нажав на него правой кнопкой мыши и выбрав пункт Unpack Prefab. Это действие распакует экземпляр префаба, но не тронет сам ассет префаба, поэтому на сцене также могут продолжить существовать и другие префабы этого типа. При таком способе распаковки вложенные префабы так и остаются префабами. Если вы хотите полной распаковки в том числе и вложенных префабов – выберите пункт Unpack Prefab Completely.
Префабы помимо прочего можно создавать через код, но это большая тема, которую я рассмотрю в своих следующих статьях.
На сегодня это все. В следующей статье я подробно остановлюсь на рассмотрении компонента Transform, так как это фундаментальный компонент необходимый для создания игр в Unity. Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!