reckfellENGINE

PckPacker

Записывает файлы и записи удаления в PCK с явным завершением.

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

Последовательность: PckStart → AddFile или AddFileFromBuffer → Flush. Проверяйте Error после каждого шага. Упаковщик переносит байты, а не выполняет импорт и экспорт ресурсов проекта. Для ZIP используйте ZipPacker.

Пример создаёт пакет с одним UTF-8 файлом; выходная папка должна существовать. Запись не атомарна: при ошибке частичный файл не удаляется автоматически.

C#
using System.Text;
using Reckfell;

public static class PackBuildExample
{
    public static Error WriteTextPack(string outputPath, string text)
    {
        using var pack = new PckPacker();
        Error error = pack.PckStart(outputPath);
        if (error != Error.Ok)
            return error;
        error = pack.AddFileFromBuffer("asset://Extra/message.txt", Encoding.UTF8.GetBytes(text));
        if (error != Error.Ok)
            return error;
        return pack.Flush();
    }
}

Подключение, порядок патчей и кэш разобраны в руководстве PCK/ZIP.

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

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

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

Создаёт упаковщик без открытого файла. Вызовите PckStart, добавьте файлы и явно проверьте результат Flush. Используйте using для освобождения упаковщика.

Методы6

AddFileError
# AddFile
C#
public Error AddFile(string targetPath, string sourcePath, bool encrypt = false);

Читает sourcePath и сразу записывает его байты в открытый пакет под логическим targetPath. Не импортирует исходные модели, не ищет зависимости и не выполняет экспорт проекта. Перед вызовом нужен успешный PckStart; после добавления нужен Flush.

Параметры
ИмяТипПо умолчанию
targetPathstring—
sourcePathstring—
encryptboolfalse
targetPath

Логический путь внутри пакета. Префикс asset:// необязателен и удаляется при записи; это не имя выходного PCK.

sourcePath

Путь существующего читаемого файла через FileAccess. В пакет копируются его текущие байты, а не ссылка на файл.

encrypt

Шифровать байты этого файла ключом из PckStart. Не меняет флаг шифрования каталога.

Возвращает Error

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

AddFileFromBuffer2 перегрузки
# AddFileFromBuffer · 1/2
C#
public Error AddFileFromBuffer(string targetPath, byte[] data, bool encrypt = false);

Сразу записывает байты data в открытый пакет под targetPath. После возврата изменение исходного массива не меняет уже записанные данные. Не сериализует Variant или Resource автоматически. Перед вызовом нужен успешный PckStart; после добавления нужен Flush.

Параметры
ИмяТипПо умолчанию
targetPathstring—
databyte[]—
encryptboolfalse
targetPath

Логический путь внутри пакета. Префикс asset:// необязателен и удаляется при записи; это не имя выходного PCK.

data

Байты содержимого. Для текста самостоятельно выберите кодировку, например Encoding.UTF8.GetBytes(text). Для span-перегрузки encrypt передаётся явно.

encrypt

Шифровать байты этого файла ключом из PckStart. Не меняет флаг шифрования каталога.

Возвращает Error

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

# AddFileFromBuffer · 2/2
C#
public Error AddFileFromBuffer(string targetPath, ReadOnlySpan<byte> data, bool encrypt);

Сразу записывает байты data в открытый пакет под targetPath. После возврата изменение исходного массива не меняет уже записанные данные. Не сериализует Variant или Resource автоматически. Перед вызовом нужен успешный PckStart; после добавления нужен Flush.

Параметры
ИмяТипПо умолчанию
targetPathstring—
dataReadOnlySpan<byte>—
encryptbool—
targetPath

Логический путь внутри пакета. Префикс asset:// необязателен и удаляется при записи; это не имя выходного PCK.

data

Байты содержимого. Для текста самостоятельно выберите кодировку, например Encoding.UTF8.GetBytes(text). Для span-перегрузки encrypt передаётся явно.

encrypt

Шифровать байты этого файла ключом из PckStart. Не меняет флаг шифрования каталога.

Возвращает Error

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

AddFileRemovalError
# AddFileRemoval
C#
public Error AddFileRemoval(string targetPath);

Добавляет в открытый PCK запись удаления логического пути. Сейчас файловая система не меняется: удаление применяется при подключении завершённого пакета. Запись удаления применяется даже при LoadResourcePack(..., replaceFiles: false). Это не удаление физического файла с диска и не освобождение уже загруженного Resource.

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

Логический путь внутри пакета. Префикс asset:// необязателен и удаляется при записи; это не имя выходного PCK.

Возвращает Error

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

FlushError
# Flush
C#
public Error Flush(bool verbose = false);

Записывает каталог добавленных файлов и закрывает текущий PCK. Вызывайте явно и проверяйте Error; после завершения для следующего пакета нужен PckStart. Dispose открытого упаковщика также завершает пакет, но не возвращает вызывающему коду результат Flush. Это не гарантия атомарной записи или сохранности при сбое питания.

Параметры
ИмяТипПо умолчанию
verboseboolfalse
verbose

При true выводить сведения о добавленных файлах в журнал во время завершения. Не изменяет содержимое пакета.

Возвращает Error

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

PckStartError
# PckStart
C#
public Error PckStart(string pckPath, int alignment = 32, string key = "0000000000000000000000000000000000000000000000000000000000000000", bool encryptDirectory = false);

Открывает выходной файл на запись и начинает новый PCK. Расширение .pck не добавляется автоматически; существующий файл может быть перезаписан. Завершите текущий пакет перед началом следующего. Ключ проверяется даже при отключённом шифровании.

Параметры
ИмяТипПо умолчанию
pckPathstring—
alignmentint32
keystring"0000000000000000000000000000000000000000000000000000000000000000"
encryptDirectoryboolfalse
pckPath

Путь выходного файла, например user://extra.pck, или абсолютный путь. Родительская папка должна существовать.

alignment

Положительное выравнивание в байтах; по умолчанию 32. Ноль и отрицательные значения отклоняются.

key

Ровно 64 шестнадцатеричных символа, задающих 32 байта ключа AES-256; не пароль. Нулевой ключ по умолчанию не является секретом. Для чтения зашифрованных данных нужен соответствующий ключ у загрузчика.

encryptDirectory

Шифровать каталог пакета. Не включает шифрование содержимого всех файлов: для них используется отдельный encrypt при добавлении.

Возвращает Error

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

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

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

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

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