class_nodepath.rst 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  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/doc/classes/NodePath.xml.
  6. .. _class_NodePath:
  7. NodePath
  8. ========
  9. A pre-parsed scene tree path.
  10. .. rst-class:: classref-introduction-group
  11. Description
  12. -----------
  13. A pre-parsed relative or absolute path in a scene tree, for use with :ref:`Node.get_node<class_Node_method_get_node>` and similar functions. It can reference a node, a resource within a node, or a property of a node or resource. For example, ``"Path2D/PathFollow2D/Sprite2D:texture:size"`` would refer to the ``size`` property of the ``texture`` resource on the node named ``"Sprite2D"``, which is a child of the other named nodes in the path.
  14. You will usually just pass a string to :ref:`Node.get_node<class_Node_method_get_node>` and it will be automatically converted, but you may occasionally want to parse a path ahead of time with **NodePath** or the literal syntax ``^"path"``. Exporting a **NodePath** variable will give you a node selection widget in the properties panel of the editor, which can often be useful.
  15. A **NodePath** is composed of a list of slash-separated node names (like a filesystem path) and an optional colon-separated list of "subnames" which can be resources or properties.
  16. Some examples of NodePaths include the following:
  17. ::
  18. # No leading slash means it is relative to the current node.
  19. ^"A" # Immediate child A
  20. ^"A/B" # A's child B
  21. ^"." # The current node.
  22. ^".." # The parent node.
  23. ^"../C" # A sibling node C.
  24. ^"../.." # The grandparent node.
  25. # A leading slash means it is absolute from the SceneTree.
  26. ^"/root" # Equivalent to get_tree().get_root().
  27. ^"/root/Main" # If your main scene's root node were named "Main".
  28. ^"/root/MyAutoload" # If you have an autoloaded node or scene.
  29. See also :ref:`StringName<class_StringName>`, which is a similar concept for general-purpose string interning.
  30. \ **Note:** In the editor, **NodePath** properties are automatically updated when moving, renaming or deleting a node in the scene tree, but they are never updated at runtime.
  31. \ **Note:** In a boolean context, a **NodePath** will evaluate to ``false`` if it is empty (``NodePath("")``). Otherwise, a **NodePath** will always evaluate to ``true``.
  32. .. note::
  33. There are notable differences when using this API with C#. See :ref:`doc_c_sharp_differences` for more information.
  34. .. rst-class:: classref-introduction-group
  35. Tutorials
  36. ---------
  37. - `2D Role Playing Game Demo <https://godotengine.org/asset-library/asset/520>`__
  38. .. rst-class:: classref-reftable-group
  39. Constructors
  40. ------------
  41. .. table::
  42. :widths: auto
  43. +---------------------------------+-------------------------------------------------------------------------------------------------------+
  44. | :ref:`NodePath<class_NodePath>` | :ref:`NodePath<class_NodePath_constructor_NodePath>` **(** **)** |
  45. +---------------------------------+-------------------------------------------------------------------------------------------------------+
  46. | :ref:`NodePath<class_NodePath>` | :ref:`NodePath<class_NodePath_constructor_NodePath>` **(** :ref:`NodePath<class_NodePath>` from **)** |
  47. +---------------------------------+-------------------------------------------------------------------------------------------------------+
  48. | :ref:`NodePath<class_NodePath>` | :ref:`NodePath<class_NodePath_constructor_NodePath>` **(** :ref:`String<class_String>` from **)** |
  49. +---------------------------------+-------------------------------------------------------------------------------------------------------+
  50. .. rst-class:: classref-reftable-group
  51. Methods
  52. -------
  53. .. table::
  54. :widths: auto
  55. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  56. | :ref:`NodePath<class_NodePath>` | :ref:`get_as_property_path<class_NodePath_method_get_as_property_path>` **(** **)** |const| |
  57. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  58. | :ref:`StringName<class_StringName>` | :ref:`get_concatenated_names<class_NodePath_method_get_concatenated_names>` **(** **)** |const| |
  59. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  60. | :ref:`StringName<class_StringName>` | :ref:`get_concatenated_subnames<class_NodePath_method_get_concatenated_subnames>` **(** **)** |const| |
  61. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  62. | :ref:`StringName<class_StringName>` | :ref:`get_name<class_NodePath_method_get_name>` **(** :ref:`int<class_int>` idx **)** |const| |
  63. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  64. | :ref:`int<class_int>` | :ref:`get_name_count<class_NodePath_method_get_name_count>` **(** **)** |const| |
  65. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  66. | :ref:`StringName<class_StringName>` | :ref:`get_subname<class_NodePath_method_get_subname>` **(** :ref:`int<class_int>` idx **)** |const| |
  67. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  68. | :ref:`int<class_int>` | :ref:`get_subname_count<class_NodePath_method_get_subname_count>` **(** **)** |const| |
  69. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  70. | :ref:`int<class_int>` | :ref:`hash<class_NodePath_method_hash>` **(** **)** |const| |
  71. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  72. | :ref:`bool<class_bool>` | :ref:`is_absolute<class_NodePath_method_is_absolute>` **(** **)** |const| |
  73. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  74. | :ref:`bool<class_bool>` | :ref:`is_empty<class_NodePath_method_is_empty>` **(** **)** |const| |
  75. +-------------------------------------+-------------------------------------------------------------------------------------------------------+
  76. .. rst-class:: classref-reftable-group
  77. Operators
  78. ---------
  79. .. table::
  80. :widths: auto
  81. +-------------------------+------------------------------------------------------------------------------------------------------------+
  82. | :ref:`bool<class_bool>` | :ref:`operator !=<class_NodePath_operator_neq_NodePath>` **(** :ref:`NodePath<class_NodePath>` right **)** |
  83. +-------------------------+------------------------------------------------------------------------------------------------------------+
  84. | :ref:`bool<class_bool>` | :ref:`operator ==<class_NodePath_operator_eq_NodePath>` **(** :ref:`NodePath<class_NodePath>` right **)** |
  85. +-------------------------+------------------------------------------------------------------------------------------------------------+
  86. .. rst-class:: classref-section-separator
  87. ----
  88. .. rst-class:: classref-descriptions-group
  89. Constructor Descriptions
  90. ------------------------
  91. .. _class_NodePath_constructor_NodePath:
  92. .. rst-class:: classref-constructor
  93. :ref:`NodePath<class_NodePath>` **NodePath** **(** **)**
  94. Constructs an empty **NodePath**.
  95. .. rst-class:: classref-item-separator
  96. ----
  97. .. rst-class:: classref-constructor
  98. :ref:`NodePath<class_NodePath>` **NodePath** **(** :ref:`NodePath<class_NodePath>` from **)**
  99. Constructs a **NodePath** as a copy of the given **NodePath**. ``NodePath("example")`` is equivalent to ``^"example"``.
  100. .. rst-class:: classref-item-separator
  101. ----
  102. .. rst-class:: classref-constructor
  103. :ref:`NodePath<class_NodePath>` **NodePath** **(** :ref:`String<class_String>` from **)**
  104. Creates a NodePath from a string, e.g. ``"Path2D/PathFollow2D/Sprite2D:texture:size"``. A path is absolute if it starts with a slash. Absolute paths are only valid in the global scene tree, not within individual scenes. In a relative path, ``"."`` and ``".."`` indicate the current node and its parent.
  105. The "subnames" optionally included after the path to the target node can point to resources or properties, and can also be nested.
  106. Examples of valid NodePaths (assuming that those nodes exist and have the referenced resources or properties):
  107. ::
  108. # Points to the Sprite2D node.
  109. "Path2D/PathFollow2D/Sprite2D"
  110. # Points to the Sprite2D node and its "texture" resource.
  111. # get_node() would retrieve "Sprite2D", while get_node_and_resource()
  112. # would retrieve both the Sprite2D node and the "texture" resource.
  113. "Path2D/PathFollow2D/Sprite2D:texture"
  114. # Points to the Sprite2D node and its "position" property.
  115. "Path2D/PathFollow2D/Sprite2D:position"
  116. # Points to the Sprite2D node and the "x" component of its "position" property.
  117. "Path2D/PathFollow2D/Sprite2D:position:x"
  118. # Absolute path (from "root")
  119. "/root/Level/Path2D"
  120. .. rst-class:: classref-section-separator
  121. ----
  122. .. rst-class:: classref-descriptions-group
  123. Method Descriptions
  124. -------------------
  125. .. _class_NodePath_method_get_as_property_path:
  126. .. rst-class:: classref-method
  127. :ref:`NodePath<class_NodePath>` **get_as_property_path** **(** **)** |const|
  128. Returns a node path with a colon character (``:``) prepended, transforming it to a pure property path with no node name (defaults to resolving from the current node).
  129. .. tabs::
  130. .. code-tab:: gdscript
  131. # This will be parsed as a node path to the "x" property in the "position" node.
  132. var node_path = NodePath("position:x")
  133. # This will be parsed as a node path to the "x" component of the "position" property in the current node.
  134. var property_path = node_path.get_as_property_path()
  135. print(property_path) # :position:x
  136. .. code-tab:: csharp
  137. // This will be parsed as a node path to the "x" property in the "position" node.
  138. var nodePath = new NodePath("position:x");
  139. // This will be parsed as a node path to the "x" component of the "position" property in the current node.
  140. NodePath propertyPath = nodePath.GetAsPropertyPath();
  141. GD.Print(propertyPath); // :position:x
  142. .. rst-class:: classref-item-separator
  143. ----
  144. .. _class_NodePath_method_get_concatenated_names:
  145. .. rst-class:: classref-method
  146. :ref:`StringName<class_StringName>` **get_concatenated_names** **(** **)** |const|
  147. Returns all paths concatenated with a slash character (``/``) as separator without subnames.
  148. .. rst-class:: classref-item-separator
  149. ----
  150. .. _class_NodePath_method_get_concatenated_subnames:
  151. .. rst-class:: classref-method
  152. :ref:`StringName<class_StringName>` **get_concatenated_subnames** **(** **)** |const|
  153. Returns all subnames concatenated with a colon character (``:``) as separator, i.e. the right side of the first colon in a node path.
  154. .. tabs::
  155. .. code-tab:: gdscript
  156. var node_path = NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path")
  157. print(node_path.get_concatenated_subnames()) # texture:load_path
  158. .. code-tab:: csharp
  159. var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path");
  160. GD.Print(nodePath.GetConcatenatedSubnames()); // texture:load_path
  161. .. rst-class:: classref-item-separator
  162. ----
  163. .. _class_NodePath_method_get_name:
  164. .. rst-class:: classref-method
  165. :ref:`StringName<class_StringName>` **get_name** **(** :ref:`int<class_int>` idx **)** |const|
  166. Gets the node name indicated by ``idx`` (0 to :ref:`get_name_count<class_NodePath_method_get_name_count>` - 1).
  167. .. tabs::
  168. .. code-tab:: gdscript
  169. var node_path = NodePath("Path2D/PathFollow2D/Sprite2D")
  170. print(node_path.get_name(0)) # Path2D
  171. print(node_path.get_name(1)) # PathFollow2D
  172. print(node_path.get_name(2)) # Sprite
  173. .. code-tab:: csharp
  174. var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D");
  175. GD.Print(nodePath.GetName(0)); // Path2D
  176. GD.Print(nodePath.GetName(1)); // PathFollow2D
  177. GD.Print(nodePath.GetName(2)); // Sprite
  178. .. rst-class:: classref-item-separator
  179. ----
  180. .. _class_NodePath_method_get_name_count:
  181. .. rst-class:: classref-method
  182. :ref:`int<class_int>` **get_name_count** **(** **)** |const|
  183. Gets the number of node names which make up the path. Subnames (see :ref:`get_subname_count<class_NodePath_method_get_subname_count>`) are not included.
  184. For example, ``"Path2D/PathFollow2D/Sprite2D"`` has 3 names.
  185. .. rst-class:: classref-item-separator
  186. ----
  187. .. _class_NodePath_method_get_subname:
  188. .. rst-class:: classref-method
  189. :ref:`StringName<class_StringName>` **get_subname** **(** :ref:`int<class_int>` idx **)** |const|
  190. Gets the resource or property name indicated by ``idx`` (0 to :ref:`get_subname_count<class_NodePath_method_get_subname_count>` - 1).
  191. .. tabs::
  192. .. code-tab:: gdscript
  193. var node_path = NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path")
  194. print(node_path.get_subname(0)) # texture
  195. print(node_path.get_subname(1)) # load_path
  196. .. code-tab:: csharp
  197. var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path");
  198. GD.Print(nodePath.GetSubname(0)); // texture
  199. GD.Print(nodePath.GetSubname(1)); // load_path
  200. .. rst-class:: classref-item-separator
  201. ----
  202. .. _class_NodePath_method_get_subname_count:
  203. .. rst-class:: classref-method
  204. :ref:`int<class_int>` **get_subname_count** **(** **)** |const|
  205. Gets the number of resource or property names ("subnames") in the path. Each subname is listed after a colon character (``:``) in the node path.
  206. For example, ``"Path2D/PathFollow2D/Sprite2D:texture:load_path"`` has 2 subnames.
  207. .. rst-class:: classref-item-separator
  208. ----
  209. .. _class_NodePath_method_hash:
  210. .. rst-class:: classref-method
  211. :ref:`int<class_int>` **hash** **(** **)** |const|
  212. Returns the 32-bit hash value representing the **NodePath**'s contents.
  213. .. rst-class:: classref-item-separator
  214. ----
  215. .. _class_NodePath_method_is_absolute:
  216. .. rst-class:: classref-method
  217. :ref:`bool<class_bool>` **is_absolute** **(** **)** |const|
  218. Returns ``true`` if the node path is absolute (as opposed to relative), which means that it starts with a slash character (``/``). Absolute node paths can be used to access the root node (``"/root"``) or autoloads (e.g. ``"/global"`` if a "global" autoload was registered).
  219. .. rst-class:: classref-item-separator
  220. ----
  221. .. _class_NodePath_method_is_empty:
  222. .. rst-class:: classref-method
  223. :ref:`bool<class_bool>` **is_empty** **(** **)** |const|
  224. Returns ``true`` if the node path is empty.
  225. .. rst-class:: classref-section-separator
  226. ----
  227. .. rst-class:: classref-descriptions-group
  228. Operator Descriptions
  229. ---------------------
  230. .. _class_NodePath_operator_neq_NodePath:
  231. .. rst-class:: classref-operator
  232. :ref:`bool<class_bool>` **operator !=** **(** :ref:`NodePath<class_NodePath>` right **)**
  233. Returns ``true`` if two node paths are not equal.
  234. .. rst-class:: classref-item-separator
  235. ----
  236. .. _class_NodePath_operator_eq_NodePath:
  237. .. rst-class:: classref-operator
  238. :ref:`bool<class_bool>` **operator ==** **(** :ref:`NodePath<class_NodePath>` right **)**
  239. Returns ``true`` if two node paths are equal, i.e. all node names in the path are the same and in the same order.
  240. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  241. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  242. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  243. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  244. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  245. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  246. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`