[email protected] 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/modules/gdscript/doc_classes/@GDScript.xml.
  6. .. _class_@GDScript:
  7. @GDScript
  8. =========
  9. Built-in GDScript functions.
  10. .. rst-class:: classref-introduction-group
  11. Description
  12. -----------
  13. A list of GDScript-specific utility functions accessed in any script.
  14. For the list of the global functions and constants see :ref:`@GlobalScope<class_@GlobalScope>`.
  15. .. rst-class:: classref-introduction-group
  16. Tutorials
  17. ---------
  18. - :doc:`GDScript exports <../tutorials/scripting/gdscript/gdscript_exports>`
  19. .. rst-class:: classref-reftable-group
  20. Methods
  21. -------
  22. .. table::
  23. :widths: auto
  24. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  25. | :ref:`Color<class_Color>` | :ref:`Color8<class_@GDScript_method_Color8>` **(** :ref:`int<class_int>` r8, :ref:`int<class_int>` g8, :ref:`int<class_int>` b8, :ref:`int<class_int>` a8=255 **)** |
  26. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  27. | void | :ref:`assert<class_@GDScript_method_assert>` **(** :ref:`bool<class_bool>` condition, :ref:`String<class_String>` message="" **)** |
  28. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  29. | :ref:`String<class_String>` | :ref:`char<class_@GDScript_method_char>` **(** :ref:`int<class_int>` char **)** |
  30. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  31. | :ref:`Variant<class_Variant>` | :ref:`convert<class_@GDScript_method_convert>` **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` type **)** |
  32. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  33. | :ref:`Object<class_Object>` | :ref:`dict_to_inst<class_@GDScript_method_dict_to_inst>` **(** :ref:`Dictionary<class_Dictionary>` dictionary **)** |
  34. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  35. | :ref:`Array<class_Array>` | :ref:`get_stack<class_@GDScript_method_get_stack>` **(** **)** |
  36. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  37. | :ref:`Dictionary<class_Dictionary>` | :ref:`inst_to_dict<class_@GDScript_method_inst_to_dict>` **(** :ref:`Object<class_Object>` instance **)** |
  38. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  39. | :ref:`int<class_int>` | :ref:`len<class_@GDScript_method_len>` **(** :ref:`Variant<class_Variant>` var **)** |
  40. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  41. | :ref:`Resource<class_Resource>` | :ref:`load<class_@GDScript_method_load>` **(** :ref:`String<class_String>` path **)** |
  42. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  43. | :ref:`Resource<class_Resource>` | :ref:`preload<class_@GDScript_method_preload>` **(** :ref:`String<class_String>` path **)** |
  44. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. | void | :ref:`print_debug<class_@GDScript_method_print_debug>` **(** ... **)** |vararg| |
  46. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | void | :ref:`print_stack<class_@GDScript_method_print_stack>` **(** **)** |
  48. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`Array<class_Array>` | :ref:`range<class_@GDScript_method_range>` **(** ... **)** |vararg| |
  50. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`String<class_String>` | :ref:`str<class_@GDScript_method_str>` **(** ... **)** |vararg| |
  52. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  53. | :ref:`bool<class_bool>` | :ref:`type_exists<class_@GDScript_method_type_exists>` **(** :ref:`StringName<class_StringName>` type **)** |
  54. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  55. .. rst-class:: classref-section-separator
  56. ----
  57. .. rst-class:: classref-descriptions-group
  58. Constants
  59. ---------
  60. .. _class_@GDScript_constant_PI:
  61. .. rst-class:: classref-constant
  62. **PI** = ``3.14159265358979``
  63. Constant that represents how many times the diameter of a circle fits around its perimeter. This is equivalent to ``TAU / 2``, or 180 degrees in rotations.
  64. .. _class_@GDScript_constant_TAU:
  65. .. rst-class:: classref-constant
  66. **TAU** = ``6.28318530717959``
  67. The circle constant, the circumference of the unit circle in radians. This is equivalent to ``PI * 2``, or 360 degrees in rotations.
  68. .. _class_@GDScript_constant_INF:
  69. .. rst-class:: classref-constant
  70. **INF** = ``inf``
  71. Positive floating-point infinity. This is the result of floating-point division when the divisor is ``0.0``. For negative infinity, use ``-INF``. Dividing by ``-0.0`` will result in negative infinity if the numerator is positive, so dividing by ``0.0`` is not the same as dividing by ``-0.0`` (despite ``0.0 == -0.0`` returning ``true``).
  72. \ **Warning:** Numeric infinity is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer number by ``0`` will not result in :ref:`INF<class_@GDScript_constant_INF>` and will result in a run-time error instead.
  73. .. _class_@GDScript_constant_NAN:
  74. .. rst-class:: classref-constant
  75. **NAN** = ``nan``
  76. "Not a Number", an invalid floating-point value. :ref:`NAN<class_@GDScript_constant_NAN>` has special properties, including that it is not equal to itself (``NAN == NAN`` returns ``false``). It is output by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``.
  77. \ **Warning:** "Not a Number" is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer ``0`` by ``0`` will not result in :ref:`NAN<class_@GDScript_constant_NAN>` and will result in a run-time error instead.
  78. .. rst-class:: classref-section-separator
  79. ----
  80. Annotations
  81. -----------
  82. .. _class_@GDScript_annotation_@export:
  83. .. rst-class:: classref-annotation
  84. **@export** **(** **)**
  85. Mark the following property as exported (editable in the Inspector dock and saved to disk). To control the type of the exported property use the type hint notation.
  86. ::
  87. @export var int_number = 5
  88. @export var float_number: float = 5
  89. .. rst-class:: classref-item-separator
  90. ----
  91. .. _class_@GDScript_annotation_@export_category:
  92. .. rst-class:: classref-annotation
  93. **@export_category** **(** :ref:`String<class_String>` name **)**
  94. Define a new category for the following exported properties. This helps to organize properties in the Inspector dock.
  95. See also :ref:`@GlobalScope.PROPERTY_USAGE_CATEGORY<class_@GlobalScope_constant_PROPERTY_USAGE_CATEGORY>`.
  96. ::
  97. @export_category("My Properties")
  98. @export var number = 3
  99. @export var string = ""
  100. \ **Note:** Categories in the property list are supposed to indicate different base types, so the use of this annotation is not encouraged. See :ref:`@export_group<class_@GDScript_annotation_@export_group>` and :ref:`@export_subgroup<class_@GDScript_annotation_@export_subgroup>` instead.
  101. .. rst-class:: classref-item-separator
  102. ----
  103. .. _class_@GDScript_annotation_@export_color_no_alpha:
  104. .. rst-class:: classref-annotation
  105. **@export_color_no_alpha** **(** **)**
  106. Export a :ref:`Color<class_Color>` property without transparency (its alpha fixed as ``1.0``).
  107. See also :ref:`@GlobalScope.PROPERTY_HINT_COLOR_NO_ALPHA<class_@GlobalScope_constant_PROPERTY_HINT_COLOR_NO_ALPHA>`.
  108. ::
  109. @export_color_no_alpha var modulate_color: Color
  110. .. rst-class:: classref-item-separator
  111. ----
  112. .. _class_@GDScript_annotation_@export_dir:
  113. .. rst-class:: classref-annotation
  114. **@export_dir** **(** **)**
  115. Export a :ref:`String<class_String>` property as a path to a directory. The path will be limited to the project folder and its subfolders. See :ref:`@export_global_dir<class_@GDScript_annotation_@export_global_dir>` to allow picking from the entire filesystem.
  116. See also :ref:`@GlobalScope.PROPERTY_HINT_DIR<class_@GlobalScope_constant_PROPERTY_HINT_DIR>`.
  117. ::
  118. @export_dir var sprite_folder: String
  119. .. rst-class:: classref-item-separator
  120. ----
  121. .. _class_@GDScript_annotation_@export_enum:
  122. .. rst-class:: classref-annotation
  123. **@export_enum** **(** :ref:`String<class_String>` names, ... **)** |vararg|
  124. Export a :ref:`String<class_String>` or integer property as an enumerated list of options. If the property is an integer field, then the index of the value is stored, in the same order the values are provided. You can add specific identifiers for allowed values using a colon.
  125. See also :ref:`@GlobalScope.PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>`.
  126. ::
  127. @export_enum("Rebecca", "Mary", "Leah") var character_name: String
  128. @export_enum("Warrior", "Magician", "Thief") var character_class: int
  129. @export_enum("Slow:30", "Average:60", "Very Fast:200") var character_speed: int
  130. .. rst-class:: classref-item-separator
  131. ----
  132. .. _class_@GDScript_annotation_@export_exp_easing:
  133. .. rst-class:: classref-annotation
  134. **@export_exp_easing** **(** :ref:`String<class_String>` hints="", ... **)** |vararg|
  135. Export a floating-point property with an easing editor widget. Additional hints can be provided to adjust the behavior of the widget. ``"attenuation"`` flips the curve, which makes it more intuitive for editing attenuation properties. ``"positive_only"`` limits values to only be greater than or equal to zero.
  136. See also :ref:`@GlobalScope.PROPERTY_HINT_EXP_EASING<class_@GlobalScope_constant_PROPERTY_HINT_EXP_EASING>`.
  137. ::
  138. @export_exp_easing var transition_speed
  139. @export_exp_easing("attenuation") var fading_attenuation
  140. @export_exp_easing("positive_only") var effect_power
  141. .. rst-class:: classref-item-separator
  142. ----
  143. .. _class_@GDScript_annotation_@export_file:
  144. .. rst-class:: classref-annotation
  145. **@export_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
  146. Export a :ref:`String<class_String>` property as a path to a file. The path will be limited to the project folder and its subfolders. See :ref:`@export_global_file<class_@GDScript_annotation_@export_global_file>` to allow picking from the entire filesystem.
  147. If ``filter`` is provided, only matching files will be available for picking.
  148. See also :ref:`@GlobalScope.PROPERTY_HINT_FILE<class_@GlobalScope_constant_PROPERTY_HINT_FILE>`.
  149. ::
  150. @export_file var sound_effect_file: String
  151. @export_file("*.txt") var notes_file: String
  152. .. rst-class:: classref-item-separator
  153. ----
  154. .. _class_@GDScript_annotation_@export_flags:
  155. .. rst-class:: classref-annotation
  156. **@export_flags** **(** :ref:`String<class_String>` names, ... **)** |vararg|
  157. Export an integer property as a bit flag field. This allows to store several "checked" or ``true`` values with one property, and comfortably select them from the Inspector dock.
  158. See also :ref:`@GlobalScope.PROPERTY_HINT_FLAGS<class_@GlobalScope_constant_PROPERTY_HINT_FLAGS>`.
  159. ::
  160. @export_flags("Fire", "Water", "Earth", "Wind") var spell_elements = 0
  161. .. rst-class:: classref-item-separator
  162. ----
  163. .. _class_@GDScript_annotation_@export_flags_2d_navigation:
  164. .. rst-class:: classref-annotation
  165. **@export_flags_2d_navigation** **(** **)**
  166. Export an integer property as a bit flag field for 2D navigation layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_navigation/layer_1<class_ProjectSettings_property_layer_names/2d_navigation/layer_1>`.
  167. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_NAVIGATION<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_NAVIGATION>`.
  168. ::
  169. @export_flags_2d_navigation var navigation_layers: int
  170. .. rst-class:: classref-item-separator
  171. ----
  172. .. _class_@GDScript_annotation_@export_flags_2d_physics:
  173. .. rst-class:: classref-annotation
  174. **@export_flags_2d_physics** **(** **)**
  175. Export an integer property as a bit flag field for 2D physics layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_physics/layer_1<class_ProjectSettings_property_layer_names/2d_physics/layer_1>`.
  176. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_PHYSICS<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_PHYSICS>`.
  177. ::
  178. @export_flags_2d_physics var physics_layers: int
  179. .. rst-class:: classref-item-separator
  180. ----
  181. .. _class_@GDScript_annotation_@export_flags_2d_render:
  182. .. rst-class:: classref-annotation
  183. **@export_flags_2d_render** **(** **)**
  184. Export an integer property as a bit flag field for 2D render layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_render/layer_1<class_ProjectSettings_property_layer_names/2d_render/layer_1>`.
  185. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_RENDER<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_RENDER>`.
  186. ::
  187. @export_flags_2d_render var render_layers: int
  188. .. rst-class:: classref-item-separator
  189. ----
  190. .. _class_@GDScript_annotation_@export_flags_3d_navigation:
  191. .. rst-class:: classref-annotation
  192. **@export_flags_3d_navigation** **(** **)**
  193. Export an integer property as a bit flag field for 3D navigation layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_navigation/layer_1<class_ProjectSettings_property_layer_names/3d_navigation/layer_1>`.
  194. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_NAVIGATION<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_NAVIGATION>`.
  195. ::
  196. @export_flags_3d_navigation var navigation_layers: int
  197. .. rst-class:: classref-item-separator
  198. ----
  199. .. _class_@GDScript_annotation_@export_flags_3d_physics:
  200. .. rst-class:: classref-annotation
  201. **@export_flags_3d_physics** **(** **)**
  202. Export an integer property as a bit flag field for 3D physics layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_physics/layer_1<class_ProjectSettings_property_layer_names/3d_physics/layer_1>`.
  203. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_PHYSICS<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_PHYSICS>`.
  204. ::
  205. @export_flags_3d_physics var physics_layers: int
  206. .. rst-class:: classref-item-separator
  207. ----
  208. .. _class_@GDScript_annotation_@export_flags_3d_render:
  209. .. rst-class:: classref-annotation
  210. **@export_flags_3d_render** **(** **)**
  211. Export an integer property as a bit flag field for 3D render layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_render/layer_1<class_ProjectSettings_property_layer_names/3d_render/layer_1>`.
  212. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_RENDER<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_RENDER>`.
  213. ::
  214. @export_flags_3d_render var render_layers: int
  215. .. rst-class:: classref-item-separator
  216. ----
  217. .. _class_@GDScript_annotation_@export_global_dir:
  218. .. rst-class:: classref-annotation
  219. **@export_global_dir** **(** **)**
  220. Export a :ref:`String<class_String>` property as a path to a directory. The path can be picked from the entire filesystem. See :ref:`@export_dir<class_@GDScript_annotation_@export_dir>` to limit it to the project folder and its subfolders.
  221. See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_DIR<class_@GlobalScope_constant_PROPERTY_HINT_GLOBAL_DIR>`.
  222. ::
  223. @export_global_dir var sprite_folder: String
  224. .. rst-class:: classref-item-separator
  225. ----
  226. .. _class_@GDScript_annotation_@export_global_file:
  227. .. rst-class:: classref-annotation
  228. **@export_global_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
  229. Export a :ref:`String<class_String>` property as a path to a file. The path can be picked from the entire filesystem. See :ref:`@export_file<class_@GDScript_annotation_@export_file>` to limit it to the project folder and its subfolders.
  230. If ``filter`` is provided, only matching files will be available for picking.
  231. See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_FILE<class_@GlobalScope_constant_PROPERTY_HINT_GLOBAL_FILE>`.
  232. ::
  233. @export_global_file var sound_effect_file: String
  234. @export_global_file("*.txt") var notes_file: String
  235. .. rst-class:: classref-item-separator
  236. ----
  237. .. _class_@GDScript_annotation_@export_group:
  238. .. rst-class:: classref-annotation
  239. **@export_group** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
  240. Define a new group for the following exported properties. This helps to organize properties in the Inspector dock. Groups can be added with an optional ``prefix``, which would make group to only consider properties that have this prefix. The grouping will break on the first property that doesn't have a prefix. The prefix is also removed from the property's name in the Inspector dock.
  241. If no ``prefix`` is provided, the every following property is added to the group. The group ends when then next group or category is defined. You can also force end a group by using this annotation with empty strings for parameters, ``@export_group("", "")``.
  242. Groups cannot be nested, use :ref:`@export_subgroup<class_@GDScript_annotation_@export_subgroup>` to add subgroups within groups.
  243. See also :ref:`@GlobalScope.PROPERTY_USAGE_GROUP<class_@GlobalScope_constant_PROPERTY_USAGE_GROUP>`.
  244. ::
  245. @export_group("My Properties")
  246. @export var number = 3
  247. @export var string = ""
  248. @export_group("Prefixed Properties", "prefix_")
  249. @export var prefix_number = 3
  250. @export var prefix_string = ""
  251. @export_group("", "")
  252. @export var ungrouped_number = 3
  253. .. rst-class:: classref-item-separator
  254. ----
  255. .. _class_@GDScript_annotation_@export_multiline:
  256. .. rst-class:: classref-annotation
  257. **@export_multiline** **(** **)**
  258. Export a :ref:`String<class_String>` property with a large :ref:`TextEdit<class_TextEdit>` widget instead of a :ref:`LineEdit<class_LineEdit>`. This adds support for multiline content and makes it easier to edit large amount of text stored in the property.
  259. See also :ref:`@GlobalScope.PROPERTY_HINT_MULTILINE_TEXT<class_@GlobalScope_constant_PROPERTY_HINT_MULTILINE_TEXT>`.
  260. ::
  261. @export_multiline var character_biography
  262. .. rst-class:: classref-item-separator
  263. ----
  264. .. _class_@GDScript_annotation_@export_node_path:
  265. .. rst-class:: classref-annotation
  266. **@export_node_path** **(** :ref:`String<class_String>` type="", ... **)** |vararg|
  267. Export a :ref:`NodePath<class_NodePath>` property with a filter for allowed node types.
  268. See also :ref:`@GlobalScope.PROPERTY_HINT_NODE_PATH_VALID_TYPES<class_@GlobalScope_constant_PROPERTY_HINT_NODE_PATH_VALID_TYPES>`.
  269. ::
  270. @export_node_path("Button", "TouchScreenButton") var some_button
  271. .. rst-class:: classref-item-separator
  272. ----
  273. .. _class_@GDScript_annotation_@export_placeholder:
  274. .. rst-class:: classref-annotation
  275. **@export_placeholder** **(** :ref:`String<class_String>` placeholder **)**
  276. Export a :ref:`String<class_String>` property with a placeholder text displayed in the editor widget when no value is present.
  277. See also :ref:`@GlobalScope.PROPERTY_HINT_PLACEHOLDER_TEXT<class_@GlobalScope_constant_PROPERTY_HINT_PLACEHOLDER_TEXT>`.
  278. ::
  279. @export_placeholder("Name in lowercase") var character_id: String
  280. .. rst-class:: classref-item-separator
  281. ----
  282. .. _class_@GDScript_annotation_@export_range:
  283. .. rst-class:: classref-annotation
  284. **@export_range** **(** :ref:`float<class_float>` min, :ref:`float<class_float>` max, :ref:`float<class_float>` step=1.0, :ref:`String<class_String>` extra_hints="", ... **)** |vararg|
  285. Export a numeric property as a range value. The range must be defined by ``min`` and ``max``, as well as an optional ``step`` and a variety of extra hints. The ``step`` defaults to ``1`` for integer properties. For floating-point numbers this value depends on your ``EditorSettings.interface/inspector/default_float_step`` setting.
  286. If hints ``"or_greater"`` and ``"or_less"`` are provided, the editor widget will not cap the value at range boundaries. The ``"exp"`` hint will make the edited values on range to change exponentially. The ``"hide_slider"`` hint will hide the slider element of the editor widget.
  287. Hints also allow to indicate the units for the edited value. Using ``"radians"`` you can specify that the actual value is in radians, but should be displayed in degrees in the Inspector dock. ``"degrees"`` allows to add a degree sign as a unit suffix. Finally, a custom suffix can be provided using ``"suffix:unit"``, where "unit" can be any string.
  288. See also :ref:`@GlobalScope.PROPERTY_HINT_RANGE<class_@GlobalScope_constant_PROPERTY_HINT_RANGE>`.
  289. ::
  290. @export_range(0, 20) var number
  291. @export_range(-10, 20) var number
  292. @export_range(-10, 20, 0.2) var number: float
  293. @export_range(0, 100, 1, "or_greater") var power_percent
  294. @export_range(0, 100, 1, "or_greater", "or_less") var health_delta
  295. @export_range(-3.14, 3.14, 0.001, "radians") var angle_radians
  296. @export_range(0, 360, 1, "degrees") var angle_degrees
  297. @export_range(-8, 8, 2, "suffix:px") var target_offset
  298. .. rst-class:: classref-item-separator
  299. ----
  300. .. _class_@GDScript_annotation_@export_subgroup:
  301. .. rst-class:: classref-annotation
  302. **@export_subgroup** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
  303. Define a new subgroup for the following exported properties. This helps to organize properties in the Inspector dock. Subgroups work exactly like groups, except they need a parent group to exist. See :ref:`@export_group<class_@GDScript_annotation_@export_group>`.
  304. See also :ref:`@GlobalScope.PROPERTY_USAGE_SUBGROUP<class_@GlobalScope_constant_PROPERTY_USAGE_SUBGROUP>`.
  305. ::
  306. @export_group("My Properties")
  307. @export var number = 3
  308. @export var string = ""
  309. @export_subgroup("My Prefixed Properties", "prefix_")
  310. @export var prefix_number = 3
  311. @export var prefix_string = ""
  312. \ **Note:** Subgroups cannot be nested, they only provide one extra level of depth. Just like the next group ends the previous group, so do the subsequent subgroups.
  313. .. rst-class:: classref-item-separator
  314. ----
  315. .. _class_@GDScript_annotation_@icon:
  316. .. rst-class:: classref-annotation
  317. **@icon** **(** :ref:`String<class_String>` icon_path **)**
  318. Add a custom icon to the current script. The script must be registered as a global class using the ``class_name`` keyword for this to have a visible effect. The icon specified at ``icon_path`` is displayed in the Scene dock for every node of that class, as well as in various editor dialogs.
  319. ::
  320. @icon("res://path/to/class/icon.svg")
  321. \ **Note:** Only the script can have a custom icon. Inner classes are not supported.
  322. \ **Note:** As annotations describe their subject, the ``@icon`` annotation must be placed before the class definition and inheritance.
  323. .. rst-class:: classref-item-separator
  324. ----
  325. .. _class_@GDScript_annotation_@onready:
  326. .. rst-class:: classref-annotation
  327. **@onready** **(** **)**
  328. Mark the following property as assigned on :ref:`Node<class_Node>`'s ready state change. Values for these properties are not assigned immediately upon the node's creation, and instead are computed and stored right before :ref:`Node._ready<class_Node_method__ready>`.
  329. ::
  330. @onready var character_name: Label = $Label
  331. .. rst-class:: classref-item-separator
  332. ----
  333. .. _class_@GDScript_annotation_@rpc:
  334. .. rst-class:: classref-annotation
  335. **@rpc** **(** :ref:`String<class_String>` mode="", :ref:`String<class_String>` sync="", :ref:`String<class_String>` transfer_mode="", :ref:`int<class_int>` transfer_channel=0, ... **)** |vararg|
  336. Mark the following method for remote procedure calls. See :doc:`High-level multiplayer <../tutorials/networking/high_level_multiplayer>`.
  337. ::
  338. @rpc()
  339. .. rst-class:: classref-item-separator
  340. ----
  341. .. _class_@GDScript_annotation_@tool:
  342. .. rst-class:: classref-annotation
  343. **@tool** **(** **)**
  344. Mark the current script as a tool script, allowing it to be loaded and executed by the editor. See :doc:`Running code in the editor <../tutorials/plugins/running_code_in_the_editor>`.
  345. ::
  346. @tool
  347. extends Node
  348. \ **Note:** As annotations describe their subject, the ``@tool`` annotation must be placed before the class definition and inheritance.
  349. .. rst-class:: classref-item-separator
  350. ----
  351. .. _class_@GDScript_annotation_@warning_ignore:
  352. .. rst-class:: classref-annotation
  353. **@warning_ignore** **(** :ref:`String<class_String>` warning, ... **)** |vararg|
  354. Mark the following statement to ignore the specified ``warning``. See :doc:`GDScript warning system <../tutorials/scripting/gdscript/warning_system>`.
  355. ::
  356. func test():
  357. print("hello")
  358. return
  359. @warning_ignore("unreachable_code")
  360. print("unreachable")
  361. .. rst-class:: classref-section-separator
  362. ----
  363. .. rst-class:: classref-descriptions-group
  364. Method Descriptions
  365. -------------------
  366. .. _class_@GDScript_method_Color8:
  367. .. rst-class:: classref-method
  368. :ref:`Color<class_Color>` **Color8** **(** :ref:`int<class_int>` r8, :ref:`int<class_int>` g8, :ref:`int<class_int>` b8, :ref:`int<class_int>` a8=255 **)**
  369. Returns a :ref:`Color<class_Color>` constructed from red (``r8``), green (``g8``), blue (``b8``), and optionally alpha (``a8``) integer channels, each divided by ``255.0`` for their final value.
  370. ::
  371. var red = Color8(255, 0, 0) # Same as Color(1, 0, 0)
  372. var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).
  373. var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).
  374. .. rst-class:: classref-item-separator
  375. ----
  376. .. _class_@GDScript_method_assert:
  377. .. rst-class:: classref-method
  378. void **assert** **(** :ref:`bool<class_bool>` condition, :ref:`String<class_String>` message="" **)**
  379. Asserts that the ``condition`` is ``true``. If the ``condition`` is ``false``, an error is generated. When running from the editor, the running project will also be paused until you resume it. This can be used as a stronger form of :ref:`@GlobalScope.push_error<class_@GlobalScope_method_push_error>` for reporting errors to project developers or add-on users.
  380. An optional ``message`` can be shown in addition to the generic "Assertion failed" message. You can use this to provide additional details about why the assertion failed.
  381. \ **Warning:** For performance reasons, the code inside :ref:`assert<class_@GDScript_method_assert>` is only executed in debug builds or when running the project from the editor. Don't include code that has side effects in an :ref:`assert<class_@GDScript_method_assert>` call. Otherwise, the project will behave differently when exported in release mode.
  382. ::
  383. # Imagine we always want speed to be between 0 and 20.
  384. var speed = -10
  385. assert(speed < 20) # True, the program will continue
  386. assert(speed >= 0) # False, the program will stop
  387. assert(speed >= 0 and speed < 20) # You can also combine the two conditional statements in one check
  388. assert(speed < 20, "the speed limit is 20") # Show a message
  389. .. rst-class:: classref-item-separator
  390. ----
  391. .. _class_@GDScript_method_char:
  392. .. rst-class:: classref-method
  393. :ref:`String<class_String>` **char** **(** :ref:`int<class_int>` char **)**
  394. Returns a single character (as a :ref:`String<class_String>`) of the given Unicode code point (which is compatible with ASCII code).
  395. ::
  396. a = char(65) # a is "A"
  397. a = char(65 + 32) # a is "a"
  398. a = char(8364) # a is "€"
  399. .. rst-class:: classref-item-separator
  400. ----
  401. .. _class_@GDScript_method_convert:
  402. .. rst-class:: classref-method
  403. :ref:`Variant<class_Variant>` **convert** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` type **)**
  404. Converts ``what`` to ``type`` in the best way possible. The ``type`` uses the :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>` values.
  405. ::
  406. var a = [4, 2.5, 1.2]
  407. print(a is Array) # Prints true
  408. var b = convert(a, TYPE_PACKED_BYTE_ARRAY)
  409. print(b) # Prints [4, 2, 1]
  410. print(b is Array) # Prints false
  411. .. rst-class:: classref-item-separator
  412. ----
  413. .. _class_@GDScript_method_dict_to_inst:
  414. .. rst-class:: classref-method
  415. :ref:`Object<class_Object>` **dict_to_inst** **(** :ref:`Dictionary<class_Dictionary>` dictionary **)**
  416. Converts a ``dictionary`` (created with :ref:`inst_to_dict<class_@GDScript_method_inst_to_dict>`) back to an Object instance. Can be useful for deserializing.
  417. .. rst-class:: classref-item-separator
  418. ----
  419. .. _class_@GDScript_method_get_stack:
  420. .. rst-class:: classref-method
  421. :ref:`Array<class_Array>` **get_stack** **(** **)**
  422. Returns an array of dictionaries representing the current call stack. See also :ref:`print_stack<class_@GDScript_method_print_stack>`.
  423. ::
  424. func _ready():
  425. foo()
  426. func foo():
  427. bar()
  428. func bar():
  429. print(get_stack())
  430. Starting from ``_ready()``, ``bar()`` would print:
  431. ::
  432. [{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]
  433. \ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`get_stack<class_@GDScript_method_get_stack>` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
  434. \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will return an empty array.
  435. .. rst-class:: classref-item-separator
  436. ----
  437. .. _class_@GDScript_method_inst_to_dict:
  438. .. rst-class:: classref-method
  439. :ref:`Dictionary<class_Dictionary>` **inst_to_dict** **(** :ref:`Object<class_Object>` instance **)**
  440. Returns the passed ``instance`` converted to a Dictionary. Can be useful for serializing.
  441. \ **Note:** Cannot be used to serialize objects with built-in scripts attached or objects allocated within built-in scripts.
  442. ::
  443. var foo = "bar"
  444. func _ready():
  445. var d = inst_to_dict(self)
  446. print(d.keys())
  447. print(d.values())
  448. Prints out:
  449. ::
  450. [@subpath, @path, foo]
  451. [, res://test.gd, bar]
  452. .. rst-class:: classref-item-separator
  453. ----
  454. .. _class_@GDScript_method_len:
  455. .. rst-class:: classref-method
  456. :ref:`int<class_int>` **len** **(** :ref:`Variant<class_Variant>` var **)**
  457. Returns the length of the given Variant ``var``. The length can be the character count of a :ref:`String<class_String>`, the element count of any array type or the size of a :ref:`Dictionary<class_Dictionary>`. For every other Variant type, a run-time error is generated and execution is stopped.
  458. ::
  459. a = [1, 2, 3, 4]
  460. len(a) # Returns 4
  461. b = "Hello!"
  462. len(b) # Returns 6
  463. .. rst-class:: classref-item-separator
  464. ----
  465. .. _class_@GDScript_method_load:
  466. .. rst-class:: classref-method
  467. :ref:`Resource<class_Resource>` **load** **(** :ref:`String<class_String>` path **)**
  468. Returns a :ref:`Resource<class_Resource>` from the filesystem located at the absolute ``path``. Unless it's already referenced elsewhere (such as in another script or in the scene), the resource is loaded from disk on function call, which might cause a slight delay, especially when loading large scenes. To avoid unnecessary delays when loading something multiple times, either store the resource in a variable or use :ref:`preload<class_@GDScript_method_preload>`.
  469. \ **Note:** Resource paths can be obtained by right-clicking on a resource in the FileSystem dock and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
  470. ::
  471. # Load a scene called "main" located in the root of the project directory and cache it in a variable.
  472. var main = load("res://main.tscn") # main will contain a PackedScene resource.
  473. \ **Important:** The path must be absolute. A relative path will always return ``null``.
  474. This function is a simplified version of :ref:`ResourceLoader.load<class_ResourceLoader_method_load>`, which can be used for more advanced scenarios.
  475. \ **Note:** Files have to be imported into the engine first to load them using this function. If you want to load :ref:`Image<class_Image>`\ s at run-time, you may use :ref:`Image.load<class_Image_method_load>`. If you want to import audio files, you can use the snippet described in :ref:`AudioStreamMP3.data<class_AudioStreamMP3_property_data>`.
  476. .. rst-class:: classref-item-separator
  477. ----
  478. .. _class_@GDScript_method_preload:
  479. .. rst-class:: classref-method
  480. :ref:`Resource<class_Resource>` **preload** **(** :ref:`String<class_String>` path **)**
  481. Returns a :ref:`Resource<class_Resource>` from the filesystem located at ``path``. During run-time, the resource is loaded when the script is being parsed. This function effectively acts as a reference to that resource. Note that this function requires ``path`` to be a constant :ref:`String<class_String>`. If you want to load a resource from a dynamic/variable path, use :ref:`load<class_@GDScript_method_load>`.
  482. \ **Note:** Resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
  483. ::
  484. # Create instance of a scene.
  485. var diamond = preload("res://diamond.tscn").instantiate()
  486. .. rst-class:: classref-item-separator
  487. ----
  488. .. _class_@GDScript_method_print_debug:
  489. .. rst-class:: classref-method
  490. void **print_debug** **(** ... **)** |vararg|
  491. Like :ref:`@GlobalScope.print<class_@GlobalScope_method_print>`, but includes the current stack frame when running with the debugger turned on.
  492. The output in the console may look like the following:
  493. ::
  494. Test print
  495. At: res://test.gd:15:_process()
  496. \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will instead print the thread ID.
  497. .. rst-class:: classref-item-separator
  498. ----
  499. .. _class_@GDScript_method_print_stack:
  500. .. rst-class:: classref-method
  501. void **print_stack** **(** **)**
  502. Prints a stack trace at the current code location. See also :ref:`get_stack<class_@GDScript_method_get_stack>`.
  503. The output in the console may look like the following:
  504. ::
  505. Frame 0 - res://test.gd:16 in function '_process'
  506. \ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`print_stack<class_@GDScript_method_print_stack>` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
  507. \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will instead print the thread ID.
  508. .. rst-class:: classref-item-separator
  509. ----
  510. .. _class_@GDScript_method_range:
  511. .. rst-class:: classref-method
  512. :ref:`Array<class_Array>` **range** **(** ... **)** |vararg|
  513. Returns an array with the given range. :ref:`range<class_@GDScript_method_range>` can be called in three ways:
  514. \ ``range(n: int)``: Starts from 0, increases by steps of 1, and stops *before* ``n``. The argument ``n`` is **exclusive**.
  515. \ ``range(b: int, n: int)``: Starts from ``b``, increases by steps of 1, and stops *before* ``n``. The arguments ``b`` and ``n`` are **inclusive** and **exclusive**, respectively.
  516. \ ``range(b: int, n: int, s: int)``: Starts from ``b``, increases/decreases by steps of ``s``, and stops *before* ``n``. The arguments ``b`` and ``n`` are **inclusive** and **exclusive**, respectively. The argument ``s`` **can** be negative, but not ``0``. If ``s`` is ``0``, an error message is printed.
  517. \ :ref:`range<class_@GDScript_method_range>` converts all arguments to :ref:`int<class_int>` before processing.
  518. \ **Note:** Returns an empty array if no value meets the value constraint (e.g. ``range(2, 5, -1)`` or ``range(5, 5, 1)``).
  519. Examples:
  520. ::
  521. print(range(4)) # Prints [0, 1, 2, 3]
  522. print(range(2, 5)) # Prints [2, 3, 4]
  523. print(range(0, 6, 2)) # Prints [0, 2, 4]
  524. print(range(4, 1, -1)) # Prints [4, 3, 2]
  525. To iterate over an :ref:`Array<class_Array>` backwards, use:
  526. ::
  527. var array = [3, 6, 9]
  528. for i in range(array.size(), 0, -1):
  529. print(array[i - 1])
  530. Output:
  531. ::
  532. 9
  533. 6
  534. 3
  535. To iterate over :ref:`float<class_float>`, convert them in the loop.
  536. ::
  537. for i in range (3, 0, -1):
  538. print(i / 10.0)
  539. Output:
  540. ::
  541. 0.3
  542. 0.2
  543. 0.1
  544. .. rst-class:: classref-item-separator
  545. ----
  546. .. _class_@GDScript_method_str:
  547. .. rst-class:: classref-method
  548. :ref:`String<class_String>` **str** **(** ... **)** |vararg|
  549. Converts one or more arguments to a :ref:`String<class_String>` in the best way possible.
  550. ::
  551. var a = [10, 20, 30]
  552. var b = str(a);
  553. len(a) # Returns 3
  554. len(b) # Returns 12
  555. .. rst-class:: classref-item-separator
  556. ----
  557. .. _class_@GDScript_method_type_exists:
  558. .. rst-class:: classref-method
  559. :ref:`bool<class_bool>` **type_exists** **(** :ref:`StringName<class_StringName>` type **)**
  560. Returns ``true`` if the given :ref:`Object<class_Object>`-derived class exists in :ref:`ClassDB<class_ClassDB>`. Note that :ref:`Variant<class_Variant>` data types are not registered in :ref:`ClassDB<class_ClassDB>`.
  561. ::
  562. type_exists("Sprite2D") # Returns true
  563. type_exists("NonExistentClass") # Returns false
  564. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  565. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  566. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  567. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  568. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  569. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`