diff --git a/tutorials/scripting/gdscript/gdscript_exports.rst b/tutorials/scripting/gdscript/gdscript_exports.rst index 8941a766d4f..a2daeb1237f 100644 --- a/tutorials/scripting/gdscript/gdscript_exports.rst +++ b/tutorials/scripting/gdscript/gdscript_exports.rst @@ -542,6 +542,38 @@ automatically. To update it, call :ref:`notify_property_list_changed() ` after setting the exported variable's value. +Reading an exported variable's value early on +--------------------------------------------- + +If you read an exported variable's value in :ref:`_init() `, +it will return the default value specified in the export annotation instead of the value +that was set in the inspector. This is because assigning values from the saved scene/resource +file occurs *after* object initialization; until then, the default value is used. + +To get the value that was set in the inspector (and therefore saved in the scene/resource file), +you need to read it *after* the object is constructed, such as in +:ref:`Node._ready() `. You can also read the value +in a setter that's defined on the exported property, which is useful in +custom resources where ``_ready()`` is not available: + +:: + + # Set this property to 3 in the inspector. + @export var exported_variable = 2: + set(value): + exported_variable = value + print("Inspector-set value: ", exported_variable) + + func _init(): + print("Initial value: ", exported_variable) + +Results in: + +.. code-block:: none + + Initial value: 2 + Inspector-set value: 3 + Advanced exports ----------------