godot - 不知道如何在脚本中引用其他场景
问题描述
我无法将 SliceAndCoagulatorScene 链接到脚本以将其可见设置为 false 我尝试过get_node
,$res://...
extends Node2D
onready var main_scene = get_node(".")
onready var SliceAndCoagulatorScene = get_node("_________")
func _ready():
main_scene.visible = true
这就是我想写的:
SliceAndCoagulatorScene.visible = false
我怎么能这样做,任何帮助表示赞赏
解决方案
为了清楚起见:res://
场景树中不存在路径,它存在于虚拟文件系统中。因此,您无法从get_node
. 因为get_node
工作在场景树上,所以需要先在场景树中加载和实例化场景。
如果您已将场景添加到编辑器中的场景树中,那么它将为您加载并实例化它,并且会有一条您可以放入的路径get_node
......但它不会是一条res://
路径,因为,再次,res://
虚拟文件系统中存在路径。
您提供res://
的路径load
(或load_interactive
,请参阅背景加载,或change_scene
),而不是get_node
.
现在,您要么尝试定位已加载的场景,要么未加载的场景。
如果您的其他场景没有加载,您需要加载它(load
或load_interactive
),它给你一个PackedScene
,实例化它(instance
),它给你一个Node
。在这一点上你有一个参考,继续使用它。您可能想要添加到场景树(例如add_child
)。
例如,这里我们将新场景附加到根(这可能是也可能不是您想要的,特别是面对不断变化的场景,但这是另一个话题):
func _ready():
var packed_scene = load("res://something.tscn")
var scene_node = packed_scene.instance()
var root = get_tree().get_root()
root.add_child(scene_node)
scene_node.visible = false # or whatever
我会建议使用PackedScene
导出:
export(PackedScene) var packed_scene
onready var scene_node = load(packed_scene).instance()
func _ready():
var root = get_tree().get_root()
root.add_child(scene_node)
scene_node.visible = false # or whatever
然后在检查器面板中,您将看到一个新属性“Packed Scene”(Godot 自动将名称大写),您可以在其中从文件系统中指定场景。另外,如果您在编辑器中移动文件系统中的场景,编辑器将为您更新路径。
注意:您可能希望也可能不希望将它们添加到get_tree().get_root()
. 其他选项包括将其添加到get_tree().get_current_scene()
、get_owner()
和。get_parent()
self
另一方面,您的两个场景都已加载到场景树中。在这种情况下,有一条从一个节点到另一个节点的路径,您可以将其放入get_node
. 如果您的目标场景不是儿童,您可能希望使用..
. 但是,我建议不要对此类路径进行硬编码。
相反,您将获得以下优势:
export(NodePath) var target_scene
onready var scene_node = get_node(target_scene)
然后在检查器面板中,您将看到一个新属性“目标场景”,您可以在其中指定要访问的节点在场景树中的位置。另外,如果您在编辑器的场景树中移动节点,它将为您更新路径。
然后你可以这样做:
func _ready():
scene_node.visible = false # or whatever
注意:如果您不知道场景是否已加载。您可能有兴趣使用find_node
. Control
还提供一个get_node_or_null
.
推荐阅读
- x86-64 - 单核速度是否受益于巨大的三级缓存?
- javascript - 如何在画布上绘制网格?
- css - Bootstrap 4 中的 .h1 .h2 .h3 .h4 .h5 .h6 类
- javascript - 使用javascript而不是jquery在滚动时触发CSS动画
- spring-boot - 如何禁用 Okta 自动配置以进行测试?
- php - 需要帮助来显示 JSON 数据
- java - 如何从 Map 形成 REST 响应
>? - python - atof 返回无法将字符串转换为浮点数:'2, 5'
- java - 将 HashMap 错误消息内容转换为 JSON
- excel - VBA vlookup - 数字列问题