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])

Print:

key value
lock (0, 0)
another_key 123

Вкладені контейнери будуть упаковані рекурсивно. Під час ітерації вони повертатимуться як PackedDataContainerRef.

Методи

Error

pack(value: Variant)

int

size() const


Описи методів

Error pack(value: Variant) 🔗

Пакети даної ємності в бінарне представництво. Вартість параметра повинна бути або Array або Dictionary, будь-який інший тип призведе до недійсної помилки даних.

Примітка: Підсумкові дзвінки до цього способу перезаписати існуючі дані.


int size() const 🔗

Повертає розмір упакованого контейнера (див. Array.size() та Dictionary.size()).