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

53 lines
5.7 KiB
Markdown

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