reckfellENGINE

Сцены и префабы

Сцены .rscene, префабы .rprefab, переопределения и независимые материалы.

На этой странице

Сцена описывает самостоятельный уровень или экран. Префаб хранит повторяемую часть: персонажа, дверь, автомобиль или декорацию.

РольФайлСодержимое
СценаMain.rsceneМир, камера, свет и экземпляры объектов
ПрефабProps/Crate.rprefabОдин ящик, который можно разместить много раз

Обе роли используют PackedEntity — сохранённое дерево сущностей. Роль определяется путём исходного файла, а не отдельным классом корня. Префаб можно запустить отдельно; сцену можно вложить в другое дерево. Выбор роли помогает организовать проект.

1. Подготовьте префаб ящика

  1. Через меню Файл / File создайте новый документ-префаб с корнем Entity3D.
  2. Назовите корень Crate. Добавьте дочерний MeshInstance3D с именем Visual.
  3. В свойстве Mesh у Visual создайте BoxMesh. Оставьте Scale = (1, 1, 1).
  4. Сохраните документ как asset://Props/Crate.rprefab.
Текст
Crate (Entity3D)
└── Visual (MeshInstance3D, BoxMesh)

Это только видимый объект. Чтобы ящик останавливал персонажа, нужны физическое тело и форма столкновения; один меш не создаёт коллизию. См. движение в 3D.

2. Разместите два экземпляра

Откройте Main.rscene из первого проекта. Это главный уровень, а не Main.rprefab.

  1. Откройте Assets через Ctrl + Space и найдите Props/Crate.rprefab.
  2. Перетащите файл на корень Main в иерархии. Повторите действие.
  3. Назовите экземпляры CrateLeft и CrateRight.
  4. Задайте им Position = (-1.5, 0.5, 0) и (1.5, 0.5, 0). При стандартном BoxMesh высотой 1 ящики окажутся над землёй, а не наполовину внутри неё.
  5. Сохраните Main.rscene и нажмите F6. Камера должна видеть оба ящика.
Текст
Main (Entity3D)
├── Camera3D
├── …
├── CrateLeft [Crate.rprefab]
└── CrateRight [Crate.rprefab]

3. Отличайте образец от переопределения

ИзменениеГде его делатьЧто изменится
Новая форма ящика для всего проектаВ исходном Crate.rprefabЭкземпляры без собственного переопределения этого свойства
Положение одного ящика в уровнеУ CrateLeft в Main.rsceneТолько этот экземпляр
Разовый вариант цветаВ отдельной копии материалаТолько объекты, которым назначена эта копия

Для проверки откройте Crate.rprefab, передвиньте Visual вверх на 0.2 и сохраните. В уровне оба меша поднимутся относительно своих корней; корни CrateLeft и CrateRight останутся на разных местах.

Если значение уже переопределено у экземпляра, изменение образца может быть не видно. Выберите именно это свойство и верните значение образца через действие сброса/возврата в Inspector. Не удаляйте экземпляр целиком ради сброса одного поля. Сохраняйте и исходный префаб после его изменения, и уровень после изменения экземпляра.

Ресурс может быть общим

Разные экземпляры дерева не означают отдельные копии каждого Material, Mesh или другого Resource. Два меша могут ссылаться на один материал: изменение его Albedo тогда изменит оба.

Для независимого цвета сделайте материал уникальным/скопируйте его в Inspector и назначьте копию нужному мешу. Если независимость должна создаваться автоматически при каждом инстанцировании, изучите ResourceLocalToScene и особенности дублирования вложенных ресурсов в руководстве по ресурсам. Простая копия верхнего ресурса не гарантирует копирование всех вложенных объектов.

Создание из кода и сохранение

Загруженный PackedEntity — образец, а Instantiate() создаёт отдельное дерево. Оно входит в уровень после AddChild(). Координаты и другие параметры, нужные в _Ready(), задавайте до добавления в дерево.

Полный пример с маркером, поворотом, лимитом объектов и удалением: объекты во время игры. Изменения работающей игры не записываются автоматически в Main.rscene или Crate.rprefab; для прогресса нужен файл сохранения.

Если что-то не сработало

СимптомПроверка
Второй ящик перекрыл первыйИзменяйте Position корней экземпляров, а не только общий Visual в образце
Изменение образца не видноСохраните префаб; проверьте локальное переопределение нужного свойства
Перекрасились все ящикиИзменён общий материал; сначала создайте отдельный ресурс
Персонаж проходит через ящикДобавьте физическое тело и форму столкновения
После запуска ящики пропалиСохраните Main.rscene и проверьте камеру; изменения только в запущенной игре не сохраняются

Меняйте роль документа штатными операциями редактора. Переименование расширения в проводнике само по себе не обновляет ссылки и зависимости проекта.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.