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.
Методы
size() const |
Описания метода
Упаковывает заданный контейнер в двоичное представление. value должно быть либо Array, либо Dictionary, любой другой тип приведет к ошибке недопустимых данных.
Примечание: Последующие вызовы этого метода перезапишут существующие данные.
Возвращает размер упакованного контейнера (см. Array.size() и Dictionary.size()).