[email protected] 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119
  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 constants, functions, and annotations.
  10. .. rst-class:: classref-introduction-group
  11. Description
  12. -----------
  13. A list of GDScript-specific utility functions and annotations accessible from 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:`bool<class_bool>` | :ref:`is_instance_of<class_@GDScript_method_is_instance_of>` **(** :ref:`Variant<class_Variant>` value, :ref:`Variant<class_Variant>` type **)** |
  40. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  41. | :ref:`int<class_int>` | :ref:`len<class_@GDScript_method_len>` **(** :ref:`Variant<class_Variant>` var **)** |
  42. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  43. | :ref:`Resource<class_Resource>` | :ref:`load<class_@GDScript_method_load>` **(** :ref:`String<class_String>` path **)** |
  44. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. | :ref:`Resource<class_Resource>` | :ref:`preload<class_@GDScript_method_preload>` **(** :ref:`String<class_String>` path **)** |
  46. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | void | :ref:`print_debug<class_@GDScript_method_print_debug>` **(** ... **)** |vararg| |
  48. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | void | :ref:`print_stack<class_@GDScript_method_print_stack>` **(** **)** |
  50. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`Array<class_Array>` | :ref:`range<class_@GDScript_method_range>` **(** ... **)** |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 ``!=`` always returns ``true``, while other comparison operators always return ``false``. This is true even when comparing with itself (``NAN == NAN`` returns ``false`` and ``NAN != NAN`` returns ``true``). It is returned 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 string = ""
  88. @export var int_number = 5
  89. @export var float_number: float = 5
  90. @export var image: Image
  91. .. rst-class:: classref-item-separator
  92. ----
  93. .. _class_@GDScript_annotation_@export_category:
  94. .. rst-class:: classref-annotation
  95. **@export_category** **(** :ref:`String<class_String>` name **)**
  96. Define a new category for the following exported properties. This helps to organize properties in the Inspector dock.
  97. See also :ref:`@GlobalScope.PROPERTY_USAGE_CATEGORY<class_@GlobalScope_constant_PROPERTY_USAGE_CATEGORY>`.
  98. ::
  99. @export_category("Statistics")
  100. @export var hp = 30
  101. @export var speed = 1.25
  102. \ **Note:** Categories in the Inspector dock's list usually divide properties coming from different classes (Node, Node2D, Sprite, etc.). For better clarity, it's recommended to use :ref:`@export_group<class_@GDScript_annotation_@export_group>` and :ref:`@export_subgroup<class_@GDScript_annotation_@export_subgroup>`, instead.
  103. .. rst-class:: classref-item-separator
  104. ----
  105. .. _class_@GDScript_annotation_@export_color_no_alpha:
  106. .. rst-class:: classref-annotation
  107. **@export_color_no_alpha** **(** **)**
  108. Export a :ref:`Color<class_Color>` property without allowing its transparency (:ref:`Color.a<class_Color_property_a>`) to be edited.
  109. See also :ref:`@GlobalScope.PROPERTY_HINT_COLOR_NO_ALPHA<class_@GlobalScope_constant_PROPERTY_HINT_COLOR_NO_ALPHA>`.
  110. ::
  111. @export_color_no_alpha var dye_color: Color
  112. .. rst-class:: classref-item-separator
  113. ----
  114. .. _class_@GDScript_annotation_@export_dir:
  115. .. rst-class:: classref-annotation
  116. **@export_dir** **(** **)**
  117. 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.
  118. See also :ref:`@GlobalScope.PROPERTY_HINT_DIR<class_@GlobalScope_constant_PROPERTY_HINT_DIR>`.
  119. ::
  120. @export_dir var sprite_folder_path: String
  121. .. rst-class:: classref-item-separator
  122. ----
  123. .. _class_@GDScript_annotation_@export_enum:
  124. .. rst-class:: classref-annotation
  125. **@export_enum** **(** :ref:`String<class_String>` names, ... **)** |vararg|
  126. Export an :ref:`int<class_int>` or :ref:`String<class_String>` property as an enumerated list of options. If the property is an :ref:`int<class_int>`, then the index of the value is stored, in the same order the values are provided. You can add explicit values using a colon. If the property is a :ref:`String<class_String>`, then the value is stored.
  127. See also :ref:`@GlobalScope.PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>`.
  128. ::
  129. @export_enum("Warrior", "Magician", "Thief") var character_class: int
  130. @export_enum("Slow:30", "Average:60", "Very Fast:200") var character_speed: int
  131. @export_enum("Rebecca", "Mary", "Leah") var character_name: String
  132. If you want to set an initial value, you must specify it explicitly:
  133. ::
  134. @export_enum("Rebecca", "Mary", "Leah") var character_name: String = "Rebecca"
  135. If you want to use named GDScript enums, then use :ref:`@export<class_@GDScript_annotation_@export>` instead:
  136. ::
  137. enum CharacterName {REBECCA, MARY, LEAH}
  138. @export var character_name: CharacterName
  139. .. rst-class:: classref-item-separator
  140. ----
  141. .. _class_@GDScript_annotation_@export_exp_easing:
  142. .. rst-class:: classref-annotation
  143. **@export_exp_easing** **(** :ref:`String<class_String>` hints="", ... **)** |vararg|
  144. 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.
  145. See also :ref:`@GlobalScope.PROPERTY_HINT_EXP_EASING<class_@GlobalScope_constant_PROPERTY_HINT_EXP_EASING>`.
  146. ::
  147. @export_exp_easing var transition_speed
  148. @export_exp_easing("attenuation") var fading_attenuation
  149. @export_exp_easing("positive_only") var effect_power
  150. .. rst-class:: classref-item-separator
  151. ----
  152. .. _class_@GDScript_annotation_@export_file:
  153. .. rst-class:: classref-annotation
  154. **@export_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
  155. 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.
  156. If ``filter`` is provided, only matching files will be available for picking.
  157. See also :ref:`@GlobalScope.PROPERTY_HINT_FILE<class_@GlobalScope_constant_PROPERTY_HINT_FILE>`.
  158. ::
  159. @export_file var sound_effect_path: String
  160. @export_file("*.txt") var notes_path: String
  161. .. rst-class:: classref-item-separator
  162. ----
  163. .. _class_@GDScript_annotation_@export_flags:
  164. .. rst-class:: classref-annotation
  165. **@export_flags** **(** :ref:`String<class_String>` names, ... **)** |vararg|
  166. 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.
  167. See also :ref:`@GlobalScope.PROPERTY_HINT_FLAGS<class_@GlobalScope_constant_PROPERTY_HINT_FLAGS>`.
  168. ::
  169. @export_flags("Fire", "Water", "Earth", "Wind") var spell_elements = 0
  170. You can add explicit values using a colon:
  171. ::
  172. @export_flags("Self:4", "Allies:8", "Foes:16") var spell_targets = 0
  173. You can also combine several flags:
  174. ::
  175. @export_flags("Self:4", "Allies:8", "Self and Allies:12", "Foes:16")
  176. var spell_targets = 0
  177. \ **Note:** A flag value must be at least ``1`` and at most ``2 ** 32 - 1``.
  178. \ **Note:** Unlike :ref:`@export_enum<class_@GDScript_annotation_@export_enum>`, the previous explicit value is not taken into account. In the following example, A is 16, B is 2, C is 4.
  179. ::
  180. @export_flags("A:16", "B", "C") var x
  181. .. rst-class:: classref-item-separator
  182. ----
  183. .. _class_@GDScript_annotation_@export_flags_2d_navigation:
  184. .. rst-class:: classref-annotation
  185. **@export_flags_2d_navigation** **(** **)**
  186. 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>`.
  187. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_NAVIGATION<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_NAVIGATION>`.
  188. ::
  189. @export_flags_2d_navigation var navigation_layers: int
  190. .. rst-class:: classref-item-separator
  191. ----
  192. .. _class_@GDScript_annotation_@export_flags_2d_physics:
  193. .. rst-class:: classref-annotation
  194. **@export_flags_2d_physics** **(** **)**
  195. 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>`.
  196. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_PHYSICS<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_PHYSICS>`.
  197. ::
  198. @export_flags_2d_physics var physics_layers: int
  199. .. rst-class:: classref-item-separator
  200. ----
  201. .. _class_@GDScript_annotation_@export_flags_2d_render:
  202. .. rst-class:: classref-annotation
  203. **@export_flags_2d_render** **(** **)**
  204. 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>`.
  205. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_RENDER<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_RENDER>`.
  206. ::
  207. @export_flags_2d_render var render_layers: int
  208. .. rst-class:: classref-item-separator
  209. ----
  210. .. _class_@GDScript_annotation_@export_flags_3d_navigation:
  211. .. rst-class:: classref-annotation
  212. **@export_flags_3d_navigation** **(** **)**
  213. 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>`.
  214. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_NAVIGATION<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_NAVIGATION>`.
  215. ::
  216. @export_flags_3d_navigation var navigation_layers: int
  217. .. rst-class:: classref-item-separator
  218. ----
  219. .. _class_@GDScript_annotation_@export_flags_3d_physics:
  220. .. rst-class:: classref-annotation
  221. **@export_flags_3d_physics** **(** **)**
  222. 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>`.
  223. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_PHYSICS<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_PHYSICS>`.
  224. ::
  225. @export_flags_3d_physics var physics_layers: int
  226. .. rst-class:: classref-item-separator
  227. ----
  228. .. _class_@GDScript_annotation_@export_flags_3d_render:
  229. .. rst-class:: classref-annotation
  230. **@export_flags_3d_render** **(** **)**
  231. 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>`.
  232. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_RENDER<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_RENDER>`.
  233. ::
  234. @export_flags_3d_render var render_layers: int
  235. .. rst-class:: classref-item-separator
  236. ----
  237. .. _class_@GDScript_annotation_@export_flags_avoidance:
  238. .. rst-class:: classref-annotation
  239. **@export_flags_avoidance** **(** **)**
  240. Export an integer property as a bit flag field for navigation avoidance layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/avoidance/layer_1<class_ProjectSettings_property_layer_names/avoidance/layer_1>`.
  241. See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_AVOIDANCE<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_AVOIDANCE>`.
  242. ::
  243. @export_flags_avoidance var avoidance_layers: int
  244. .. rst-class:: classref-item-separator
  245. ----
  246. .. _class_@GDScript_annotation_@export_global_dir:
  247. .. rst-class:: classref-annotation
  248. **@export_global_dir** **(** **)**
  249. Export a :ref:`String<class_String>` property as an absolute 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.
  250. See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_DIR<class_@GlobalScope_constant_PROPERTY_HINT_GLOBAL_DIR>`.
  251. ::
  252. @export_global_dir var sprite_folder_path: String
  253. .. rst-class:: classref-item-separator
  254. ----
  255. .. _class_@GDScript_annotation_@export_global_file:
  256. .. rst-class:: classref-annotation
  257. **@export_global_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
  258. Export a :ref:`String<class_String>` property as an absolute 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.
  259. If ``filter`` is provided, only matching files will be available for picking.
  260. See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_FILE<class_@GlobalScope_constant_PROPERTY_HINT_GLOBAL_FILE>`.
  261. ::
  262. @export_global_file var sound_effect_path: String
  263. @export_global_file("*.txt") var notes_path: String
  264. .. rst-class:: classref-item-separator
  265. ----
  266. .. _class_@GDScript_annotation_@export_group:
  267. .. rst-class:: classref-annotation
  268. **@export_group** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
  269. 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.
  270. If no ``prefix`` is provided, then every following property will be 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("", "")``.
  271. Groups cannot be nested, use :ref:`@export_subgroup<class_@GDScript_annotation_@export_subgroup>` to add subgroups within groups.
  272. See also :ref:`@GlobalScope.PROPERTY_USAGE_GROUP<class_@GlobalScope_constant_PROPERTY_USAGE_GROUP>`.
  273. ::
  274. @export_group("Racer Properties")
  275. @export var nickname = "Nick"
  276. @export var age = 26
  277. @export_group("Car Properties", "car_")
  278. @export var car_label = "Speedy"
  279. @export var car_number = 3
  280. @export_group("", "")
  281. @export var ungrouped_number = 3
  282. .. rst-class:: classref-item-separator
  283. ----
  284. .. _class_@GDScript_annotation_@export_multiline:
  285. .. rst-class:: classref-annotation
  286. **@export_multiline** **(** **)**
  287. 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.
  288. See also :ref:`@GlobalScope.PROPERTY_HINT_MULTILINE_TEXT<class_@GlobalScope_constant_PROPERTY_HINT_MULTILINE_TEXT>`.
  289. ::
  290. @export_multiline var character_biography
  291. .. rst-class:: classref-item-separator
  292. ----
  293. .. _class_@GDScript_annotation_@export_node_path:
  294. .. rst-class:: classref-annotation
  295. **@export_node_path** **(** :ref:`String<class_String>` type="", ... **)** |vararg|
  296. Export a :ref:`NodePath<class_NodePath>` property with a filter for allowed node types.
  297. See also :ref:`@GlobalScope.PROPERTY_HINT_NODE_PATH_VALID_TYPES<class_@GlobalScope_constant_PROPERTY_HINT_NODE_PATH_VALID_TYPES>`.
  298. ::
  299. @export_node_path("Button", "TouchScreenButton") var some_button
  300. .. rst-class:: classref-item-separator
  301. ----
  302. .. _class_@GDScript_annotation_@export_placeholder:
  303. .. rst-class:: classref-annotation
  304. **@export_placeholder** **(** :ref:`String<class_String>` placeholder **)**
  305. Export a :ref:`String<class_String>` property with a placeholder text displayed in the editor widget when no value is present.
  306. See also :ref:`@GlobalScope.PROPERTY_HINT_PLACEHOLDER_TEXT<class_@GlobalScope_constant_PROPERTY_HINT_PLACEHOLDER_TEXT>`.
  307. ::
  308. @export_placeholder("Name in lowercase") var character_id: String
  309. .. rst-class:: classref-item-separator
  310. ----
  311. .. _class_@GDScript_annotation_@export_range:
  312. .. rst-class:: classref-annotation
  313. **@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|
  314. Export an :ref:`int<class_int>` or :ref:`float<class_float>` 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.
  315. 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.
  316. 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.
  317. See also :ref:`@GlobalScope.PROPERTY_HINT_RANGE<class_@GlobalScope_constant_PROPERTY_HINT_RANGE>`.
  318. ::
  319. @export_range(0, 20) var number
  320. @export_range(-10, 20) var number
  321. @export_range(-10, 20, 0.2) var number: float
  322. @export_range(0, 100, 1, "or_greater") var power_percent
  323. @export_range(0, 100, 1, "or_greater", "or_less") var health_delta
  324. @export_range(-3.14, 3.14, 0.001, "radians") var angle_radians
  325. @export_range(0, 360, 1, "degrees") var angle_degrees
  326. @export_range(-8, 8, 2, "suffix:px") var target_offset
  327. .. rst-class:: classref-item-separator
  328. ----
  329. .. _class_@GDScript_annotation_@export_subgroup:
  330. .. rst-class:: classref-annotation
  331. **@export_subgroup** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
  332. 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>`.
  333. See also :ref:`@GlobalScope.PROPERTY_USAGE_SUBGROUP<class_@GlobalScope_constant_PROPERTY_USAGE_SUBGROUP>`.
  334. ::
  335. @export_group("Racer Properties")
  336. @export var nickname = "Nick"
  337. @export var age = 26
  338. @export_subgroup("Car Properties", "car_")
  339. @export var car_label = "Speedy"
  340. @export var car_number = 3
  341. \ **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.
  342. .. rst-class:: classref-item-separator
  343. ----
  344. .. _class_@GDScript_annotation_@icon:
  345. .. rst-class:: classref-annotation
  346. **@icon** **(** :ref:`String<class_String>` icon_path **)**
  347. 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.
  348. ::
  349. @icon("res://path/to/class/icon.svg")
  350. \ **Note:** Only the script can have a custom icon. Inner classes are not supported.
  351. \ **Note:** As annotations describe their subject, the ``@icon`` annotation must be placed before the class definition and inheritance.
  352. \ **Note:** Unlike other annotations, the argument of the ``@icon`` annotation must be a string literal (constant expressions are not supported).
  353. .. rst-class:: classref-item-separator
  354. ----
  355. .. _class_@GDScript_annotation_@onready:
  356. .. rst-class:: classref-annotation
  357. **@onready** **(** **)**
  358. Mark the following property as assigned when the :ref:`Node<class_Node>` is ready. Values for these properties are not assigned immediately when the node is initialized (:ref:`Object._init<class_Object_method__init>`), and instead are computed and stored right before :ref:`Node._ready<class_Node_method__ready>`.
  359. ::
  360. @onready var character_name: Label = $Label
  361. .. rst-class:: classref-item-separator
  362. ----
  363. .. _class_@GDScript_annotation_@rpc:
  364. .. rst-class:: classref-annotation
  365. **@rpc** **(** :ref:`String<class_String>` mode="authority", :ref:`String<class_String>` sync="call_remote", :ref:`String<class_String>` transfer_mode="unreliable", :ref:`int<class_int>` transfer_channel=0, ... **)** |vararg|
  366. Mark the following method for remote procedure calls. See :doc:`High-level multiplayer <../tutorials/networking/high_level_multiplayer>`.
  367. The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter and all arguments can be omitted, but ``transfer_channel`` always has to be the last argument. The accepted values for ``mode`` are ``"any_peer"`` or ``"authority"``, for ``sync`` are ``"call_remote"`` or ``"call_local"`` and for ``transfer_mode`` are ``"unreliable"``, ``"unreliable_ordered"`` or ``"reliable"``.
  368. ::
  369. @rpc
  370. func fn(): pass
  371. @rpc("any_peer", "unreliable_ordered")
  372. func fn_update_pos(): pass
  373. @rpc("authority", "call_remote", "unreliable", 0) # Equivalent to @rpc
  374. func fn_default(): pass
  375. .. rst-class:: classref-item-separator
  376. ----
  377. .. _class_@GDScript_annotation_@static_unload:
  378. .. rst-class:: classref-annotation
  379. **@static_unload** **(** **)**
  380. Make a script with static variables to not persist after all references are lost. If the script is loaded again the static variables will revert to their default values.
  381. .. rst-class:: classref-item-separator
  382. ----
  383. .. _class_@GDScript_annotation_@tool:
  384. .. rst-class:: classref-annotation
  385. **@tool** **(** **)**
  386. 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>`.
  387. ::
  388. @tool
  389. extends Node
  390. \ **Note:** As annotations describe their subject, the ``@tool`` annotation must be placed before the class definition and inheritance.
  391. .. rst-class:: classref-item-separator
  392. ----
  393. .. _class_@GDScript_annotation_@warning_ignore:
  394. .. rst-class:: classref-annotation
  395. **@warning_ignore** **(** :ref:`String<class_String>` warning, ... **)** |vararg|
  396. Mark the following statement to ignore the specified ``warning``. See :doc:`GDScript warning system <../tutorials/scripting/gdscript/warning_system>`.
  397. ::
  398. func test():
  399. print("hello")
  400. return
  401. @warning_ignore("unreachable_code")
  402. print("unreachable")
  403. .. rst-class:: classref-section-separator
  404. ----
  405. .. rst-class:: classref-descriptions-group
  406. Method Descriptions
  407. -------------------
  408. .. _class_@GDScript_method_Color8:
  409. .. rst-class:: classref-method
  410. :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 **)**
  411. 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. Using :ref:`Color8<class_@GDScript_method_Color8>` instead of the standard :ref:`Color<class_Color>` constructor is useful when you need to match exact color values in an :ref:`Image<class_Image>`.
  412. ::
  413. var red = Color8(255, 0, 0) # Same as Color(1, 0, 0).
  414. var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).
  415. var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).
  416. \ **Note:** Due to the lower precision of :ref:`Color8<class_@GDScript_method_Color8>` compared to the standard :ref:`Color<class_Color>` constructor, a color created with :ref:`Color8<class_@GDScript_method_Color8>` will generally not be equal to the same color created with the standard :ref:`Color<class_Color>` constructor. Use :ref:`Color.is_equal_approx<class_Color_method_is_equal_approx>` for comparisons to avoid issues with floating-point precision error.
  417. .. rst-class:: classref-item-separator
  418. ----
  419. .. _class_@GDScript_method_assert:
  420. .. rst-class:: classref-method
  421. void **assert** **(** :ref:`bool<class_bool>` condition, :ref:`String<class_String>` message="" **)**
  422. 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.
  423. 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.
  424. \ **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.
  425. ::
  426. # Imagine we always want speed to be between 0 and 20.
  427. var speed = -10
  428. assert(speed < 20) # True, the program will continue.
  429. assert(speed >= 0) # False, the program will stop.
  430. assert(speed >= 0 and speed < 20) # You can also combine the two conditional statements in one check.
  431. assert(speed < 20, "the speed limit is 20") # Show a message.
  432. .. rst-class:: classref-item-separator
  433. ----
  434. .. _class_@GDScript_method_char:
  435. .. rst-class:: classref-method
  436. :ref:`String<class_String>` **char** **(** :ref:`int<class_int>` char **)**
  437. Returns a single character (as a :ref:`String<class_String>`) of the given Unicode code point (which is compatible with ASCII code).
  438. ::
  439. a = char(65) # a is "A"
  440. a = char(65 + 32) # a is "a"
  441. a = char(8364) # a is "€"
  442. .. rst-class:: classref-item-separator
  443. ----
  444. .. _class_@GDScript_method_convert:
  445. .. rst-class:: classref-method
  446. :ref:`Variant<class_Variant>` **convert** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` type **)**
  447. Converts ``what`` to ``type`` in the best way possible. The ``type`` uses the :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>` values.
  448. ::
  449. var a = [4, 2.5, 1.2]
  450. print(a is Array) # Prints true
  451. var b = convert(a, TYPE_PACKED_BYTE_ARRAY)
  452. print(b) # Prints [4, 2, 1]
  453. print(b is Array) # Prints false
  454. .. rst-class:: classref-item-separator
  455. ----
  456. .. _class_@GDScript_method_dict_to_inst:
  457. .. rst-class:: classref-method
  458. :ref:`Object<class_Object>` **dict_to_inst** **(** :ref:`Dictionary<class_Dictionary>` dictionary **)**
  459. 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.
  460. .. rst-class:: classref-item-separator
  461. ----
  462. .. _class_@GDScript_method_get_stack:
  463. .. rst-class:: classref-method
  464. :ref:`Array<class_Array>` **get_stack** **(** **)**
  465. Returns an array of dictionaries representing the current call stack. See also :ref:`print_stack<class_@GDScript_method_print_stack>`.
  466. ::
  467. func _ready():
  468. foo()
  469. func foo():
  470. bar()
  471. func bar():
  472. print(get_stack())
  473. Starting from ``_ready()``, ``bar()`` would print:
  474. ::
  475. [{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]
  476. \ **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.
  477. \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will return an empty array.
  478. .. rst-class:: classref-item-separator
  479. ----
  480. .. _class_@GDScript_method_inst_to_dict:
  481. .. rst-class:: classref-method
  482. :ref:`Dictionary<class_Dictionary>` **inst_to_dict** **(** :ref:`Object<class_Object>` instance **)**
  483. Returns the passed ``instance`` converted to a Dictionary. Can be useful for serializing.
  484. \ **Note:** Cannot be used to serialize objects with built-in scripts attached or objects allocated within built-in scripts.
  485. ::
  486. var foo = "bar"
  487. func _ready():
  488. var d = inst_to_dict(self)
  489. print(d.keys())
  490. print(d.values())
  491. Prints out:
  492. ::
  493. [@subpath, @path, foo]
  494. [, res://test.gd, bar]
  495. .. rst-class:: classref-item-separator
  496. ----
  497. .. _class_@GDScript_method_is_instance_of:
  498. .. rst-class:: classref-method
  499. :ref:`bool<class_bool>` **is_instance_of** **(** :ref:`Variant<class_Variant>` value, :ref:`Variant<class_Variant>` type **)**
  500. Returns ``true`` if ``value`` is an instance of ``type``. The ``type`` value must be one of the following:
  501. - A constant from the :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>` enumeration, for example :ref:`@GlobalScope.TYPE_INT<class_@GlobalScope_constant_TYPE_INT>`.
  502. - An :ref:`Object<class_Object>`-derived class which exists in :ref:`ClassDB<class_ClassDB>`, for example :ref:`Node<class_Node>`.
  503. - A :ref:`Script<class_Script>` (you can use any class, including inner one).
  504. Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays) and is more performant. Use the operator instead of this method if you do not need dynamic type checking.
  505. Examples:
  506. ::
  507. print(is_instance_of(a, TYPE_INT))
  508. print(is_instance_of(a, Node))
  509. print(is_instance_of(a, MyClass))
  510. print(is_instance_of(a, MyClass.InnerClass))
  511. \ **Note:** If ``value`` and/or ``type`` are freed objects (see :ref:`@GlobalScope.is_instance_valid<class_@GlobalScope_method_is_instance_valid>`), or ``type`` is not one of the above options, this method will raise a runtime error.
  512. See also :ref:`@GlobalScope.typeof<class_@GlobalScope_method_typeof>`, :ref:`type_exists<class_@GDScript_method_type_exists>`, :ref:`Array.is_same_typed<class_Array_method_is_same_typed>` (and other :ref:`Array<class_Array>` methods).
  513. .. rst-class:: classref-item-separator
  514. ----
  515. .. _class_@GDScript_method_len:
  516. .. rst-class:: classref-method
  517. :ref:`int<class_int>` **len** **(** :ref:`Variant<class_Variant>` var **)**
  518. 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.
  519. ::
  520. a = [1, 2, 3, 4]
  521. len(a) # Returns 4
  522. b = "Hello!"
  523. len(b) # Returns 6
  524. .. rst-class:: classref-item-separator
  525. ----
  526. .. _class_@GDScript_method_load:
  527. .. rst-class:: classref-method
  528. :ref:`Resource<class_Resource>` **load** **(** :ref:`String<class_String>` path **)**
  529. 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>`.
  530. \ **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 current script.
  531. ::
  532. # Load a scene called "main" located in the root of the project directory and cache it in a variable.
  533. var main = load("res://main.tscn") # main will contain a PackedScene resource.
  534. \ **Important:** The path must be absolute. A relative path will always return ``null``.
  535. This function is a simplified version of :ref:`ResourceLoader.load<class_ResourceLoader_method_load>`, which can be used for more advanced scenarios.
  536. \ **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>`.
  537. \ **Note:** If :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` is ``true``, :ref:`load<class_@GDScript_method_load>` will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, set :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` to ``false``.
  538. .. rst-class:: classref-item-separator
  539. ----
  540. .. _class_@GDScript_method_preload:
  541. .. rst-class:: classref-method
  542. :ref:`Resource<class_Resource>` **preload** **(** :ref:`String<class_String>` path **)**
  543. 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>`.
  544. \ **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 current script.
  545. ::
  546. # Create instance of a scene.
  547. var diamond = preload("res://diamond.tscn").instantiate()
  548. .. rst-class:: classref-item-separator
  549. ----
  550. .. _class_@GDScript_method_print_debug:
  551. .. rst-class:: classref-method
  552. void **print_debug** **(** ... **)** |vararg|
  553. Like :ref:`@GlobalScope.print<class_@GlobalScope_method_print>`, but includes the current stack frame when running with the debugger turned on.
  554. The output in the console may look like the following:
  555. ::
  556. Test print
  557. At: res://test.gd:15:_process()
  558. \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will instead print the thread ID.
  559. .. rst-class:: classref-item-separator
  560. ----
  561. .. _class_@GDScript_method_print_stack:
  562. .. rst-class:: classref-method
  563. void **print_stack** **(** **)**
  564. Prints a stack trace at the current code location. See also :ref:`get_stack<class_@GDScript_method_get_stack>`.
  565. The output in the console may look like the following:
  566. ::
  567. Frame 0 - res://test.gd:16 in function '_process'
  568. \ **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.
  569. \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will instead print the thread ID.
  570. .. rst-class:: classref-item-separator
  571. ----
  572. .. _class_@GDScript_method_range:
  573. .. rst-class:: classref-method
  574. :ref:`Array<class_Array>` **range** **(** ... **)** |vararg|
  575. Returns an array with the given range. :ref:`range<class_@GDScript_method_range>` can be called in three ways:
  576. \ ``range(n: int)``: Starts from 0, increases by steps of 1, and stops *before* ``n``. The argument ``n`` is **exclusive**.
  577. \ ``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.
  578. \ ``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.
  579. \ :ref:`range<class_@GDScript_method_range>` converts all arguments to :ref:`int<class_int>` before processing.
  580. \ **Note:** Returns an empty array if no value meets the value constraint (e.g. ``range(2, 5, -1)`` or ``range(5, 5, 1)``).
  581. Examples:
  582. ::
  583. print(range(4)) # Prints [0, 1, 2, 3]
  584. print(range(2, 5)) # Prints [2, 3, 4]
  585. print(range(0, 6, 2)) # Prints [0, 2, 4]
  586. print(range(4, 1, -1)) # Prints [4, 3, 2]
  587. To iterate over an :ref:`Array<class_Array>` backwards, use:
  588. ::
  589. var array = [3, 6, 9]
  590. for i in range(array.size() - 1, -1, -1):
  591. print(array[i])
  592. Output:
  593. ::
  594. 9
  595. 6
  596. 3
  597. To iterate over :ref:`float<class_float>`, convert them in the loop.
  598. ::
  599. for i in range (3, 0, -1):
  600. print(i / 10.0)
  601. Output:
  602. ::
  603. 0.3
  604. 0.2
  605. 0.1
  606. .. rst-class:: classref-item-separator
  607. ----
  608. .. _class_@GDScript_method_type_exists:
  609. .. rst-class:: classref-method
  610. :ref:`bool<class_bool>` **type_exists** **(** :ref:`StringName<class_StringName>` type **)**
  611. 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>`.
  612. ::
  613. type_exists("Sprite2D") # Returns true
  614. type_exists("NonExistentClass") # Returns false
  615. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  616. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  617. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  618. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  619. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  620. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`