PackedDataContainer

Устарело: Use @GlobalScope.var_to_bytes() or FileAccess.store_var() instead. To enable data compression, use PackedByteArray.compress() or FileAccess.open_compressed().

Наследует: Resource < RefCounted < Object

Эффективно упаковывает и сериализует Array или Dictionary.

Описание

PackedDataContainer можно использовать для эффективного хранения данных из нетипизированных контейнеров. Данные упаковываются в необработанные байты и могут быть сохранены в файл. Только Array и Dictionary можно хранить таким образом.

Вы можете извлечь данные, итерируя по контейнеру, что будет работать так же, как и итерация по самим упакованным данным. Если упакованный контейнер — это Dictionary, данные можно извлечь по именам ключей (только String/StringName).

var data = { "key": "value", "another_key": 123, "lock": Vector2() }
var packed = PackedDataContainer.new()
packed.pack(data)
ResourceSaver.save(packed, "packed_data.res")
var container = load("packed_data.res")
for key in container:
    prints(key, container[key])

Prints:

key value
lock (0, 0)
another_key 123

Вложенные контейнеры будут упакованы рекурсивно. При итерации они будут возвращены как PackedDataContainerRef.

Методы

Error

pack(value: Variant)

int

size() const


Описания метода

Error pack(value: Variant) 🔗

Упаковывает заданный контейнер в двоичное представление. value должно быть либо Array, либо Dictionary, любой другой тип приведет к ошибке недопустимых данных.

Примечание: Последующие вызовы этого метода перезапишут существующие данные.


int size() const 🔗

Возвращает размер упакованного контейнера (см. Array.size() и Dictionary.size()).