Arma 3 Scripting

Command in Namespaces, GUI Control

disableSerialization

Also available as Markdown and JSON, or read the original wiki page.

Description

Disable saving of script containing this command. After this, the script can work with data types which do not support serialization (UI types).

Note

See Namespace serialization for more information.

Important

In Arma 2 and up to a certain version of Arma 3, giving a Display or Control to spawned code would raise an error due to the usage of the then non-serializable _this variable. Using disableSerialization or uiNamespace wouldn't help; the trick here is to pass the argument inside an array:

_display = findDisplay 46;
 _display  spawn { hint str _this; };                // would raise a serialization error
[_display] spawn { hint str (_this select 0); };    // OK

Syntax

disableSerialization

Returns: Nothing

Examples

Example 1

disableSerialization;
private _display = findDisplay 46;

See also

Display · displayAddEventHandler · displayRemoveAllEventHandlers · displayRemoveEventHandler · uiSleep

Community notes

Str

Can be used to detecting load. Scope with disabled serialization is discontinued after load, even if there's endless loop inside.

0 spawn { disableSerialization; waitUntil { false }; hint "Game was loaded!";};

Works for all possible load types - loading user save, loading autosave and resuming mission from main menu.

Use with caution, as it creates an infinite loop, having impact at overall scripting time.

Killzone_Kid

If you do not store UI elements (Display, Control) in variables, you do not need disableSerialization; UI elements are usually returned by scripting commands such as findDisplay or passed as params in UI event handler scripts (displayAddEventHandler, ctrlAddEventHandler).

This code will require disableSerialization:

disableSerialization;
_display = findDisplay 123;
_ctrl = _display displayCtrl -1;
_ctrl ctrlSetText "LOL";

This code will not:

findDisplay 123 displayCtrl -1 ctrlSetText "LOL";
Nelis75733126

In Arma 3 1.74, a scripted FSM is somehow incompatible with disableSerialization.

As a workaround, store a display inside an array. Example:

_display = [findDisplay idd];