reckfellENGINE

ResourceSaver

Сохранение ресурсов через зарегистрированные обработчики форматов.

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

ResourceSaver.Save() сохраняет готовый Resource, не произвольное дерево игры. Формат выбирают ресурс, расширение и зарегистрированные saver. .rdata — текстовый ресурс, .rbin — binary; PackedEntity использует .rscene для уровня и .rprefab для префаба.

Проверяйте Error и возможности выбранного backend. ChangePath имеет подтверждённое ограничение восстановления после ошибки; SetUid() не обновляет runtime-реестр автоматически и не является транзакцией. Сжатый binary ресурс загружайте через ResourceLoader, не как обычный архив.

Собственный ResourceFormatSaver зарегистрируйте один раз и удалите до Dispose. Singleton принадлежит движку. Проверки проводились на Windows в отдельном процессе; редакторные callback, аварийная замена и сохранение UID cache между запусками не проверены.

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

Свойства1

SingletonСвойство
# Singleton
C#
public static ResourceSaverInstance Singleton { get; }

Заимствованный wrapper глобального сервиса движка. Повторное получение использует cached managed wrapper; не создаёт отдельный реестр. Не вызывайте Free()/Dispose() у этого engine-owned объекта. Для обычной работы используйте статические методы класса.

Методы6

AddResourceFormatSavervoid
# AddResourceFormatSaver
C#
public static void AddResourceFormatSaver(ResourceFormatSaver formatSaver, bool atFront = false);

Добавляет собственный ResourceFormatSaver в глобальный список; atFront=true даёт приоритет перед текущими обработчиками. Реестр удерживает native-ссылку, но регистрацию и managed-срок жизни организуйте явно. Повторная регистрация того же экземпляра разрешена и создаёт дубликат; не добавляйте его перед каждым Save. Метод не возвращает Error; неверный объект/исчерпание лимита дают диагностику. Удалите регистрацию до Dispose собственного saver.

Параметры
ИмяТипПо умолчанию
formatSaverResourceFormatSaver—
atFrontboolfalse
formatSaver

Собственный экземпляр saver; удерживайте его до явного удаления регистрации.

atFront

True вставляет первым; false добавляет после существующих обработчиков.

GetRecognizedExtensionsstring[]
# GetRecognizedExtensions
C#
public static string[] GetRecognizedExtensions(Resource type);

Собирает расширения из зарегистрированных saver для переданного экземпляра Resource; параметр type не является C# typeof/именем класса. Имена без точки, возможны повторы, сортировка не обещается. Список не гарантирует успешный Save: конкретный handler ещё проверяет Recognize/RecognizePath и может отказать. Набор зависит от ресурса и текущей регистрации плагинов.

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

Экземпляр Resource, для которого запрашиваются расширения; не объект System.Type.

Возвращает string[]

Новый string[] расширений без точки, с возможными дубликатами.

GetResourceIdForPathlong
# GetResourceIdForPath
C#
public static long GetResourceIdForPath(string path, bool generate = false);

Делегирует запрос UID необязательному callback, обычно настроенному редактором. Это не ResourceUid.CreateIdForPath и не общая фабрика UID. Без callback возвращает InvalidId даже при generate=true; это подтверждено в игровом headless-процессе. Не проверяет автоматически весь файл/реестр и не гарантирует запись UID на диск.

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

Путь, передаваемый callback; не текст uid://.

generate

Разрешить callback создать UID, если он поддерживает это; без callback всё равно InvalidId.

Возвращает long

UID callback либо ResourceUid.InvalidId; generate=true не гарантирует новое значение.

RemoveResourceFormatSavervoid
# RemoveResourceFormatSaver
C#
public static void RemoveResourceFormatSaver(ResourceFormatSaver formatSaver);

Удаляет первую регистрацию указанного экземпляра. Если он добавлен дважды, один Remove оставляет вторую регистрацию; это проверено. Не уничтожает автоматически ваш managed-wrapper и не удаляет сохранённые файлы. Отсутствующий/null saver даёт диагностику; при обычном lifecycle учитывайте, был ли Add выполнен.

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

Тот же экземпляр, который был зарегистрирован; удаляется одна его регистрация.

SaveError
# Save
C#
public static Error Save(Resource resource, string path = "", ResourceSaver.SaverFlags flags = ResourceSaver.SaverFlags.None);

Сохраняет Resource через зарегистрированные format savers: сначала проверяется объект и путь, затем вызывается обработчик. Пустой path использует ResourcePath; если оба пусты, операция недопустима. После ошибки возможен переход к следующему обработчику, а Ok означает его ответ, не независимую проверку файла. Флаги реализуются конкретным saver. В 1.0.0 ChangePath меняет ResourcePath перед вызовом, но восстанавливает старое значение только при успехе: неудача может оставить новый путь, в том числе после успешного fallback. Это воспроизведено. Не является атомарным сохранением игры; живую Entity сначала нужно упаковать отдельно, Save принимает Resource.

Параметры
ИмяТипПо умолчанию
resourceResource—
pathstring""
flagsResourceSaver.SaverFlagsResourceSaver.SaverFlags.None
resource

Готовый живой Resource для выбранного формата; не Entity дерева игры.

path

Путь назначения с подходящим расширением; пустой использует текущий ResourcePath. Родители и доступность проверяются отдельно.

flags

SaverFlags для backend; Compress/SaveBigEndian относятся к binary saver. ChangePath имеет описанное ограничение восстановления при ошибке.

Возвращает Error

Error последнего подходящего обработчика; Ok не является независимым подтверждением записи/атомарности.

SetUidError
# SetUid
C#
public static Error SetUid(string resource, long uid);

Просит format saver изменить UID существующего ресурсного файла, не создаёт игровую Entity и не регистрирует путь в ResourceUid автоматически. Проверяйте Error. Текстовый backend 1.0.0 использует временный .uidren и remove/rename, не передавая наружу их ошибки; это source-only ограничение, не транзакционная гарантия. На Windows проверено изменение заголовка обычного .rdata; ошибки замены и редакторное сканирование не выполнялись.

Параметры
ИмяТипПо умолчанию
resourcestring—
uidlong—
resource

Путь уже записанного ресурсного файла; это string, не объект Resource.

uid

UID ресурса; при самостоятельном управлении заранее проверьте допустимость и конфликт регистрации.

Возвращает Error

Error обработчика; для текстовой замены не означает проверки всех завершающих файловых операций.

ResourceSaver.SaverFlags

ЗначениеОписание
BundleResources = 2

Пакеты внешних ресурсов.

ChangePath = 4

Изменяет Resource.ResourcePath сохраненного ресурса в соответствии с его новым местоположением.

Compress = 32

Сжимать ресурс при сохранении с помощью FileAccess.CompressionMode.Zstd. Доступно только для двоичных типов ресурсов.

None = 0

Нет возможности экономии ресурсов.

OmitEditorProperties = 8

Не сохраняйте метаданные, специфичные для редактора (идентифицируемые префиксом __editor).

RelativePaths = 1

Сохраните ресурс с путем относительно сцены, которая его использует.

ReplaceSubresourcePaths = 64

Перенять пути сохраненных подресурсов (см. Resource.TakeOverPath).

SaveBigEndian = 16

Сохранить как Большой эндиан (см. FileAccess.BigEndian).

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

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

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

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