Files
aego/engine/res/docs/prefabs.ru.md
sanspie f22242e5aa
ci / release (push) Successful in 5m5s
ci-platforms / build (amd64, windows, windows-2022) (push) Skipped
ci-platforms / build (arm64, darwin, macos-15) (push) Skipped
ci-platforms / build (amd64, darwin, macos-15-intel) (push) Skipped
ci / checks (push) Successful in 4m41s
ci / build (amd64, linux, ubuntu-24.04) (push) Successful in 7m14s
Stage 11g2–11g3: registry texts, CLI and the site in Russian (D348)
The remaining editor strings and undo step names; component, field, enum, setting, diagnostic and Script API texts under schema.*, enum.*, setting.*, diag.* and api.*; the launcher, the in-game Settings View with a Language setting, the CLI and aego schema show --lang. Every documentation page has a .ru.md translation; the site has a full Russian tree with hreflang, a language switch and ru/llms.txt; aego docs check --lang ru. New doc.tutorial and doc.recipe icons. Fix: an animator restored by a rewind prepares its controller before the replayed step.
2026-10-25 15:31:22 +03:00

5.7 KiB

id, title
id title
prefabs Префабы

Префабы

Экземпляр префаба выбран в Иерархии: оранжевый куб отмечает экземпляры

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

Создание и размещение

Режим префаба: префаб открыт отдельно, а цепочка навигации ведёт обратно в сцену

  • Перетащите узел из Иерархии на папку в «Ассетах» или выберите Иерархия → Префаб → Создать префаб. Узел станет экземпляром нового префаба и сохранит свои идентификаторы, поэтому ссылки на него продолжат работать.
  • Перетащите .aeprefab в Иерархию или на панель «Сцена» либо выберите Создать экземпляр в сцене в его контекстном меню.
  • Откройте префаб двойным щелчком или через Префаб → Открыть префаб. Сохранение префаба обновляет все открытые экземпляры за один шаг. Этот шаг можно отменить из любой из этих сцен.

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

Любое изменение экземпляра — переопределение: свойство, добавленный или удалённый компонент, добавленный или удалённый узел, порядок дочерних узлов. Позиция, поворот и масштаб корня экземпляра всегда принадлежат самому экземпляру.

  • Иерархия отмечает корни экземпляров значком префаба, а добавленные вами узлы — плюсом.
  • Инспектор отмечает переопределённые свойства полосой слева, а добавленные компоненты — меткой added. В карточке «Префаб» наверху есть Применить всё, Вернуть всё и Открыть.
  • Щёлкните правой кнопкой свойство, компонент или узел, чтобы применить его к префабу или вернуть.

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

Вложенные префабы и варианты

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

Вариант — это префаб, корень которого — экземпляр другого префаба: Префаб → Создать вариант. Вариант меняет то, что переопределяет, а во всём остальном следует своей основе.

Неиспользуемые переопределения

Когда из префаба пропадает узел или компонент, который переопределяет экземпляр, переопределение сохраняется и попадает в список «Неиспользуемые переопределения» в карточке «Префаб». Оно ничего не делает, пока вы его не удалите. «Проблемы» показывают его как PFB002.

Отсутствующие префабы

Если файла префаба нет, экземпляр загружается как пустой узел с именем префаба и сохраняется обратно без изменений. «Проблемы» показывают PFB001. Игра не блокируется.

Распаковка

  • Распаковать превращает экземпляр в обычные узлы; вложенные в него префабы становятся самостоятельными экземплярами.
  • Распаковать полностью превращает всё в обычные узлы.

Скрипты

scene.Instantiate(prefab, parent) создаёт копию во время игры. У копии новые идентификаторы узлов, а ссылки внутри неё указывают внутрь копии.

node.IsPrefabInstance() сообщает, является ли узел копией префаба или лежит ли внутри неё. node.PrefabRoot() возвращает корень этой копии.