5.8 KiB
id, title
| id | title |
|---|---|
| prefabs | Префабы |
Префабы
Префаб — это часть сцены для повторного использования, которая хранится в файле .aeprefab. Каждая его копия в сцене — экземпляр. Экземпляр показывает префаб и хранит собственные изменения — переопределения. Когда префаб меняется, все экземпляры следуют за ним, а их переопределения остаются.
В примере с лампами показаны несколько копий с разными переопределениями.
Создание и размещение
- Перетащите узел из Иерархии на папку в «Ассетах» или выберите Иерархия → Префаб → Создать префаб. Узел станет экземпляром нового префаба и сохранит свои идентификаторы, поэтому ссылки на него продолжат работать.
- Перетащите
.aeprefabв Иерархию или на панель «Сцена» либо выберите Создать экземпляр в сцене в его контекстном меню. - Откройте префаб двойным щелчком или через Префаб → Открыть префаб. Сохранение префаба обновляет все открытые экземпляры за один шаг. Этот шаг можно отменить из любой из этих сцен.
Переопределения
Любое изменение экземпляра — переопределение: свойство, добавленный или удалённый компонент, добавленный или удалённый узел, порядок дочерних узлов. Позиция, поворот и масштаб корня экземпляра всегда принадлежат самому экземпляру.
- Иерархия отмечает корни экземпляров значком префаба, а добавленные вами узлы — плюсом.
- Инспектор отмечает переопределённые свойства полосой слева, а добавленные компоненты — меткой
added. В карточке «Префаб» наверху есть Применить всё, Вернуть всё и Открыть. - Щёлкните правой кнопкой свойство, компонент или узел, чтобы применить его к префабу или вернуть.
Узлы из префаба внутри экземпляра сохраняют своего родителя. Чтобы переместить их, распакуйте экземпляр.
Вложенные префабы и варианты
Префаб может содержать экземпляры других префабов. Когда вы применяете изменение, сделанное внутри вложенного экземпляра, выберите, куда оно пойдёт: в сам вложенный префаб или во внешний префаб как переопределение его вложенного экземпляра.
Вариант — это префаб, корень которого — экземпляр другого префаба: Префаб → Создать вариант. Вариант меняет то, что переопределяет, а во всём остальном следует своей основе.
Неиспользуемые переопределения
Когда из префаба пропадает узел или компонент, который переопределяет экземпляр, переопределение сохраняется и попадает в список «Неиспользуемые переопределения» в карточке «Префаб». Оно ничего не делает, пока вы его не удалите. «Проблемы» показывают его как PFB002.
Отсутствующие префабы
Если файла префаба нет, экземпляр загружается как пустой узел с именем префаба и сохраняется обратно без изменений. «Проблемы» показывают PFB001. Игра не блокируется.
Распаковка
- Распаковать превращает экземпляр в обычные узлы; вложенные в него префабы становятся самостоятельными экземплярами.
- Распаковать полностью превращает всё в обычные узлы.
Скрипты
scene.Instantiate(prefab, parent) создаёт копию во время игры. У копии новые идентификаторы узлов, а ссылки внутри неё указывают внутрь копии.
node.IsPrefabInstance() сообщает, является ли узел копией префаба или лежит ли внутри неё. node.PrefabRoot() возвращает корень этой копии.

