:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/PackedDataContainer.xml. .. _class_PackedDataContainer: PackedDataContainer =================== **Deprecated:** Use :ref:`@GlobalScope.var_to_bytes()` or :ref:`FileAccess.store_var()` instead. To enable data compression, use :ref:`PackedByteArray.compress()` or :ref:`FileAccess.open_compressed()`. **Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` Efficiently packs and serializes :ref:`Array` or :ref:`Dictionary`. .. rst-class:: classref-introduction-group Description ----------- **PackedDataContainer** can be used to efficiently store data from untyped containers. The data is packed into raw bytes and can be saved to file. Only :ref:`Array` and :ref:`Dictionary` can be stored this way. You can retrieve the data by iterating on the container, which will work as if iterating on the packed data itself. If the packed container is a :ref:`Dictionary`, the data can be retrieved by key names (:ref:`String`/:ref:`StringName` only). :: 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: .. code:: text key value lock (0, 0) another_key 123 Nested containers will be packed recursively. While iterating, they will be returned as :ref:`PackedDataContainerRef`. .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +---------------------------------------+-------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`pack`\ (\ value\: :ref:`Variant`\ ) | +---------------------------------------+-------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`size`\ (\ ) |const| | +---------------------------------------+-------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_PackedDataContainer_method_pack: .. rst-class:: classref-method :ref:`Error` **pack**\ (\ value\: :ref:`Variant`\ ) :ref:`🔗` Packs the given container into a binary representation. The ``value`` must be either :ref:`Array` or :ref:`Dictionary`, any other type will result in invalid data error. \ **Note:** Subsequent calls to this method will overwrite the existing data. .. rst-class:: classref-item-separator ---- .. _class_PackedDataContainer_method_size: .. rst-class:: classref-method :ref:`int` **size**\ (\ ) |const| :ref:`🔗` Returns the size of the packed container (see :ref:`Array.size()` and :ref:`Dictionary.size()`). .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` .. |void| replace:: :abbr:`void (No return value.)`