Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
节点路径¶
A pre-parsed scene tree path.
描述¶
A pre-parsed relative or absolute path in a scene tree, for use with Node.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.
You will usually just pass a string to Node.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.
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.
Some examples of NodePaths include the following:
# No leading slash means it is relative to the current node.
^"A" # Immediate child A
^"A/B" # A's child B
^"." # The current node.
^".." # The parent node.
^"../C" # A sibling node C.
^"../.." # The grandparent node.
# A leading slash means it is absolute from the SceneTree.
^"/root" # Equivalent to get_tree().get_root().
^"/root/Main" # If your main scene's root node were named "Main".
^"/root/MyAutoload" # If you have an autoloaded node or scene.
See also StringName, which is a similar concept for general-purpose string interning.
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.
Note: In a boolean context, a NodePath will evaluate to false
if it is empty (NodePath("")
). Otherwise, a NodePath will always evaluate to true
.
备注
There are notable differences when using this API with C#. See C# API 与 GDScript 的差异 for more information.
教程¶
构造函数¶
NodePath ( ) |
|
Methods¶
get_as_property_path ( ) const |
|
get_concatenated_names ( ) const |
|
get_concatenated_subnames ( ) const |
|
get_name_count ( ) const |
|
get_subname ( int idx ) const |
|
get_subname_count ( ) const |
|
hash ( ) const |
|
is_absolute ( ) const |
|
is_empty ( ) const |
运算符¶
operator != ( NodePath right ) |
|
operator == ( NodePath right ) |
Constructor Descriptions¶
NodePath NodePath ( )
Constructs an empty NodePath.
NodePath NodePath ( NodePath from )
Constructs a NodePath as a copy of the given NodePath. NodePath("example")
is equivalent to ^"example"
.
NodePath NodePath ( String from )
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.
The "subnames" optionally included after the path to the target node can point to resources or properties, and can also be nested.
Examples of valid NodePaths (assuming that those nodes exist and have the referenced resources or properties):
# Points to the Sprite2D node.
"Path2D/PathFollow2D/Sprite2D"
# Points to the Sprite2D node and its "texture" resource.
# get_node() would retrieve "Sprite2D", while get_node_and_resource()
# would retrieve both the Sprite2D node and the "texture" resource.
"Path2D/PathFollow2D/Sprite2D:texture"
# Points to the Sprite2D node and its "position" property.
"Path2D/PathFollow2D/Sprite2D:position"
# Points to the Sprite2D node and the "x" component of its "position" property.
"Path2D/PathFollow2D/Sprite2D:position:x"
# Absolute path (from "root")
"/root/Level/Path2D"
Method Descriptions¶
NodePath get_as_property_path ( ) const
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).
# This will be parsed as a node path to the "x" property in the "position" node.
var node_path = NodePath("position:x")
# This will be parsed as a node path to the "x" component of the "position" property in the current node.
var property_path = node_path.get_as_property_path()
print(property_path) # :position:x
// This will be parsed as a node path to the "x" property in the "position" node.
var nodePath = new NodePath("position:x");
// This will be parsed as a node path to the "x" component of the "position" property in the current node.
NodePath propertyPath = nodePath.GetAsPropertyPath();
GD.Print(propertyPath); // :position:x
StringName get_concatenated_names ( ) const
Returns all paths concatenated with a slash character (/
) as separator without subnames.
StringName get_concatenated_subnames ( ) const
Returns all subnames concatenated with a colon character (:
) as separator, i.e. the right side of the first colon in a node path.
var node_path = NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path")
print(node_path.get_concatenated_subnames()) # texture:load_path
var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path");
GD.Print(nodePath.GetConcatenatedSubnames()); // texture:load_path
StringName get_name ( int idx ) const
Gets the node name indicated by idx
(0 to get_name_count - 1).
var node_path = NodePath("Path2D/PathFollow2D/Sprite2D")
print(node_path.get_name(0)) # Path2D
print(node_path.get_name(1)) # PathFollow2D
print(node_path.get_name(2)) # Sprite
var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D");
GD.Print(nodePath.GetName(0)); // Path2D
GD.Print(nodePath.GetName(1)); // PathFollow2D
GD.Print(nodePath.GetName(2)); // Sprite
int get_name_count ( ) const
Gets the number of node names which make up the path. Subnames (see get_subname_count) are not included.
For example, "Path2D/PathFollow2D/Sprite2D"
has 3 names.
StringName get_subname ( int idx ) const
Gets the resource or property name indicated by idx
(0 to get_subname_count - 1).
var node_path = NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path")
print(node_path.get_subname(0)) # texture
print(node_path.get_subname(1)) # load_path
var nodePath = new NodePath("Path2D/PathFollow2D/Sprite2D:texture:load_path");
GD.Print(nodePath.GetSubname(0)); // texture
GD.Print(nodePath.GetSubname(1)); // load_path
int get_subname_count ( ) const
Gets the number of resource or property names ("subnames") in the path. Each subname is listed after a colon character (:
) in the node path.
For example, "Path2D/PathFollow2D/Sprite2D:texture:load_path"
has 2 subnames.
int hash ( ) const
Returns the 32-bit hash value representing the NodePath's contents.
bool is_absolute ( ) const
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).
bool is_empty ( ) const
Returns true
if the node path is empty.
Operator Descriptions¶
bool operator != ( NodePath right )
Returns true
if two node paths are not equal.
bool operator == ( NodePath right )
Returns true
if two node paths are equal, i.e. all node names in the path are the same and in the same order.