NodePath
简要描述
预解析的场景树路径。
描述
场景树中预先解析的相对或绝对路径,用于Node.get_node和类似功能。
通常,您只需要将字符串传递给Node.get_node并将其自动转换,但是您有时可能希望提前使用NodePath或文字语法` @"path" [/
NodePath由斜杠分隔的节点名称列表(如文件系统路径)和可选的冒号分隔的“子名称”列表组成,这些列表可以是资源或属性。
NodePath的一些示例包括:
# 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.
# 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.
方法
返回值类型 | 方法名称 |
---|---|
NodePath | NodePath(#method-NodePath)(from: String) |
NodePath | get_as_property_path() |
String | get_concatenated_subnames() |
String | get_name(idx: int) |
int | get_name_count() |
String | get_subname(idx: int) |
int | get_subname_count() |
bool | is_absolute() |
bool | is_empty() |
方法说明
- NodePath NodePath(from: String)
从字符串创建一个NodePath,例如"Path2D/PathFollow2D/Sprite:texture:size"
。以斜杠开头的路径是绝对路径。绝对路径只在全局场景树中有效,在单个场景中无效。在相对路径中, "."
和 ".."
表示当前节点及其父节点。
到目标节点的路径之后可选包括的“子名称”可以指向资源或属性,也可以嵌套。
有效NodePath的示例(假设这些节点存在并且具有引用的资源或属性):
# Points to the Sprite node
"Path2D/PathFollow2D/Sprite"
# Points to the Sprite node and its "texture" resource.
# get_node() would retrieve "Sprite", while get_node_and_resource()
# would retrieve both the Sprite node and the "texture" resource.
"Path2D/PathFollow2D/Sprite:texture"
# Points to the Sprite node and its "position" property.
"Path2D/PathFollow2D/Sprite:position"
# Points to the Sprite node and the "x" component of its "position" property.
"Path2D/PathFollow2D/Sprite:position:x"
# Absolute path (from "root")
"/root/Level/Path2D"
- get_as_property_path get_as_property_path()
返回带有冒号(:
)的节点路径,将其转换为没有节点名称的纯属性路径(默认为从当前节点解析)。
# 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
- get_concatenated_subnames get_concatenated_subnames()
返回所有用冒号(:
)分隔的子名称,即节点路径中第一个冒号的右侧。
var nodepath = NodePath("Path2D/PathFollow2D/Sprite:texture:load_path")
print(nodepath.get_concatenated_subnames()) # texture:load_path
- get_name get_name(idx: int)
获取由idx
指示的节点名称(0到get_name_count)。
var node_path = NodePath("Path2D/PathFollow2D/Sprite")
print(node_path.get_name(0)) # Path2D
print(node_path.get_name(1)) # PathFollow2D
print(node_path.get_name(2)) # Sprite
- get_name_count get_name_count()
获取组成路径的节点名称的数量。不包括子名称(参见[方法get_subname_count])。
例如,"Path2D/PathFollow2D/Sprite"
有3个名称。
- get_subname get_subname(idx: int)
获取由idx
指示的资源或属性名称(0到get_subname_count)。
var node_path = NodePath("Path2D/PathFollow2D/Sprite:texture:load_path")
print(node_path.get_subname(0)) # texture
print(node_path.get_subname(1)) # load_path
- get_subname_count get_subname_count()
获取路径中资源或属性名称(“子名称”)的数量。每个子名称在节点路径中的冒号字符(:
)后面列出。
例如,"Path2D/PathFollow2D/Sprite:texture:load_path"
有2个子名称。
- is_absolute is_absolute()
如果节点路径是绝对路径(相对路径),则返回true
,这意味着它以斜杠字符( /
)开头。绝对节点路径可以用于访问根节点("/root"
)或自动加载(例如,如果注册了一个"全局"自动加载,则可以使用"/global"
)。
- is_empty is_empty()
如果节点路径为空,则返回true
。