reckfellENGINE

PackedEntity

Упаковка и создание иерархий уровней и префабов.

На этой странице
class PackedEntityReckfellSharpНаследует Resource

PackedEntity — Resource с сериализованной иерархией. .rscene задаёт уровень, .rprefab — префаб; роль определяется путём исходного asset, а не отдельным подклассом Entity.

Для создания: Instantiate() → проверка результата → AddChild(). До входа в дерево корень не получает обычный _Ready. Неиспользованный экземпляр нужно Free(). Generic-варианты сначала создают корень и только затем приводят тип: при несовпадении автоматической очистки нет.

Для упаковки runtime-потомков задайте Owner соответствующему корню, затем проверьте Pack(). Упаковка идёт в память; файл сохраняется отдельно через ResourceSaver. Сохраняются persistent-группы и соединения, а не все временные подписки.

Обычные ресурсы могут разделяться между экземплярами; ResourceLocalToScene отделяет ресурсы при инстанцировании. GetState() даёт общий объект метаданных, не независимый снимок.

Создание экземпляров, ресурсы. Windows headless-проверки покрывают собственную C#-иерархию; editor modes, наследование, положительный placeholder и запись/загрузка файлов здесь не выполнялись.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

PackedEntityКонструктор
# PackedEntity
C#
public PackedEntity();

Создаёт пустой контейнер сериализованной иерархии с собственным PackedEntityState. До успешного Pack/загрузки CanInstantiate=false. Это Resource, не живая Entity; добавлять в дерево нужно результат Instantiate.

Свойства1

_BundledСвойство
# _Bundled
C#
public Reckfell.Collections.Dictionary _Bundled { get; set; }

Внутренняя Dictionary-схема сериализации. Не стабильный API редактирования уровня и не пользовательский формат сохранений. Setter восстанавливает state из взаимосвязанных массивов/индексов; изменение случайного ключа может нарушить структуру. Для обычного создания используйте Pack, для чтения — GetState. Проверен только roundtrip корректного bundle собственного QA-объекта; повреждённые данные не выполнялись.

Методы6

CanInstantiatebool
# CanInstantiate
C#
public bool CanInstantiate();

Проверяет только наличие записей Entity в state. True не доказывает наличие всех скриптов/зависимостей, корректность каждого свойства или успешность будущего Instantiate. Для пустого нового PackedEntity возвращает false.

Возвращает bool

True только при непустом state, не гарантия успешного создания.

GetStatePackedEntityState
# GetState
C#
public PackedEntityState GetState();

Возвращает текущее общее состояние сериализации, не снимок и не живое дерево. Повтор может вернуть тот же C# wrapper. Pack/ResetState изменяют данные, видимые через сохранённую ссылку. Не Dispose общий wrapper, пока PackedEntity или другой код продолжает им пользоваться; для обычного анализа держите владельца живым.

Возвращает PackedEntityState

Общий PackedEntityState этого ресурса, не независимая копия.

Instantiate2 перегрузки
# Instantiate · 1/2
C#
public Entity Instantiate(PackedEntity.GenEditState editState = PackedEntity.GenEditState.Disabled);

Создаёт новую иерархию Entity с восстановлением сохраняемых свойств, групп и соединений. Не вызывает AddChild и не гарантирует _Ready до входа в дерево. Владелец результата должен добавить корень в дерево либо Free неиспользованный корень; дочерние Entity освобождаются с ним. Local-to-scene ресурсы отделяются по экземплярам, обычные ресурсы могут оставаться общими. По умолчанию используйте GenEditState.Disabled. При ошибке native-создания возможны null и диагностика.

Параметры
ИмяТипПо умолчанию
editStatePackedEntity.GenEditStatePackedEntity.GenEditState.Disabled
editState

Disabled для обычного runtime. Другие режимы служат редактору и требуют tools; это не настройка качества/асинхронности.

Возвращает Entity

Новый корень Entity либо null при native-неудаче; владелец обязан прикрепить или освободить результат.

# Instantiate · 2/2
C#
public T Instantiate<T>(PackedEntity.GenEditState editState = PackedEntity.GenEditState.Disabled) where T : class;

Создаёт новую иерархию Entity с восстановлением сохраняемых свойств, групп и соединений. Не вызывает AddChild и не гарантирует _Ready до входа в дерево. Владелец результата должен добавить корень в дерево либо Free неиспользованный корень; дочерние Entity освобождаются с ним. Local-to-scene ресурсы отделяются по экземплярам, обычные ресурсы могут оставаться общими. По умолчанию используйте GenEditState.Disabled. При ошибке native-создания возможны null и диагностика. Generic wrapper приводит уже созданный корень к T и может бросить InvalidCastException. При ошибке приведения корень автоматически не Free; для неизвестного типа сохраняйте результат негeneric Instantiate до проверки.

Параметры
ИмяТипПо умолчанию
editStatePackedEntity.GenEditStatePackedEntity.GenEditState.Disabled
editState

Disabled для обычного runtime. Другие режимы служат редактору и требуют tools; это не настройка качества/асинхронности.

Возвращает T

Новый корень Entity либо null при native-неудаче; владелец обязан прикрепить или освободить результат. При несовпадении T — InvalidCastException.

InstantiateOrNullT
# InstantiateOrNull
C#
public T InstantiateOrNull<T>(PackedEntity.GenEditState editState = PackedEntity.GenEditState.Disabled) where T : class;

Сначала создаёт native-иерархию, затем выполняет C# as T. При несовпадении типа возвращает null, но wrapper не освобождает уже созданный корень. Это не безопасная проверка типа перед созданием. Если тип заранее неизвестен, сохраните результат обычного Instantiate, выполните is T и явно Free корень при отказе. Совпадающий тип проверен; несовпадение разобрано по исходникам без исполнения.

Параметры
ИмяТипПо умолчанию
editStatePackedEntity.GenEditStatePackedEntity.GenEditState.Disabled
editState

Disabled для обычного runtime. Другие режимы служат редактору и требуют tools; это не настройка качества/асинхронности.

Возвращает T

Созданный корень как T либо null; несовпадение типа не освобождает native-корень.

PackError
# Pack
C#
public Error Pack(Entity path);

Сериализует переданную живую иерархию в память этого PackedEntity, не в файл. Несмотря на имя path, параметр — Entity-корень. Parent/child недостаточно: для обычных добавленных потомков задайте Owner соответствующему корню; неподходящие потомки пропускаются. Сохраняются persistent-группы/соединения и сохраняемые свойства, не всё runtime-состояние. Исходное дерево остаётся живым. Новый Pack заменяет прежний state; ошибка parsing может его очистить — атомарный откат не обещается. Для диска отдельно вызывайте ResourceSaver.Save.

Параметры
ИмяТипПо умолчанию
pathEntity—
path

Живой корень Entity для упаковки, не строка файла; учитывайте Owner потомков.

Возвращает Error

Ok для принятой упаковки либо Error; не подтверждение записи файла.

PackedEntity.GenEditState

ЗначениеОписание
Disabled = 0

Обычное создание экземпляра без режима редактирования. Используйте это значение во время игры; оно задано по умолчанию.

Instance = 1

Режим редактирования экземпляра с подготовкой его локальных ресурсов. Доступен только в сборках редактора; для обычного запуска игры используйте Disabled.

Main = 2

Режим редактирования основного открытого уровня с подготовкой локальных ресурсов. Его должен получать только основной редактируемый корень. Доступен только в сборках редактора.

MainInherited = 3

Вариант Main для иерархии, создаваемой как основа наследуемого уровня или префаба. Доступен только в сборках редактора.

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

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

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

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