reckfellENGINE

PackedDataContainer

Устаревший упакованный ресурс Array/Dictionary с ограниченной поддержкой типов.

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

Помечен Obsolete в SDK 1.0.0. Для новых бинарных данных используйте ReckfellApi.VarToBytes или FileAccess.StoreVar; для Base64-представления Variant — Marshalls.VariantToBase64. Упаковка этого класса сама по себе не является сжатием данных.

Pack принимает корневой Array или Dictionary, заменяя ранее сохранённое содержимое. Size — число элементов корня, не размер байтов. Новый пустой ресурс ещё не имеет валидного заголовка: сначала Pack корректного контейнера или загрузка готового ресурса; Size до этого диагностируется. Полученные __Data___ — внутренний формат, не JSON и не бинарный Variant для BytesToVar.

Поддержка вложенных типов неполна. Object/RID заменяются nil. В текущей реализации scalar Color не обрабатывается: Pack может вернуть Ok, но чтение элемента даёт ссылку на корневой контейнер вместо Color. Значит, Ok не доказывает сохранность произвольного набора Variant. В этом обзоре дефект воспроизведён, исходники не исправлялись. Циклические и произвольные контейнеры не проверены.

Вложенные Array/Dictionary читаются как PackedDataContainerRef, удерживающие источник и смещение, а не глубокие копии. Не переупаковывайте и не меняйте __Data___ при использовании старых представлений. Прямых C#-индексатора/IEnumerable этот SDK-класс не предоставляет; нативная Variant-индексация проверена через Expression, а не предполагается обычный foreach по обёртке.

Для собственного ресурса используйте Dispose после работы. __Data___ скрыто в SDK и не проверяет произвольные входные байты: не используйте setter как валидатор внешнего файла. Проверены только корректные данные того же runtime и отдельно описанный дефект Color.

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

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

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

Создаёт собственный устаревший Resource без валидного упакованного корня. До Size/чтения выполните Pack корректного Array/Dictionary. Для новых данных предпочитайте актуальную сериализацию Variant.

Свойства1

__Data___Свойство
# __Data___
C#
public byte[] __Data___ { get; set; }

Скрытое внутреннее byte[]-хранилище устаревшего ресурса. Getter возвращает C#-копию; setter копирует байты и длину без проверки полной структуры/смещений. Проверен перенос корректных байтов из того же runtime. Не подавайте внешние/произвольно изменённые данные и не меняйте источник при активных вложенных представлениях.

Методы2

PackError
# Pack
C#
public Error Pack(Variant value);

Заменяет всё содержимое упакованным Array/Dictionary и возвращает Error. Топ-уровень проверяется, произвольные вложенные типы — нет: Object/RID становятся nil, а scalar Color в текущем коде может дать неверную ссылку даже при Ok. Не является сжатием и не проверяет циклический граф. Старые вложенные представления после перепаковки не используйте.

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

Ациклический Array/Dictionary с заранее проверенными поддерживаемыми типами значений. Один лишь Ok не подтверждает сохранность любых вложенных Variant.

Возвращает Error

Error.Ok при принятом корне, не доказательство сохранности каждого типа; неверный корень диагностируется и возвращает ошибку.

Sizeint
# Size
C#
public int Size();

Читает число элементов валидного корневого Array/Dictionary, не длину __Data___ в байтах. Новый ресурс без заголовка вызывает диагностику; корректный упакованный пустой контейнер имеет Size=0.

Возвращает int

Число элементов, не число байтов; 0 может быть пустым контейнером или диагностическим fallback.

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

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

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

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