- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法将 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
,参见 Background loading 或 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
。如果您的目标场景不是 child ,您可能希望使用 ..
提升几个级别。但是,我建议不要硬编码这样的路径。
相反,您将充分利用以下方面:
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
。
关于godot - 不知道如何将其他场景引用到脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65660219/
我在 Godot 中制作一个自上而下的游戏,当我将 Camera 2D 节点添加到我的播放器并将其设置为当前时,播放器卡在同一个地方并且无法再移动。我收到此错误消息 modules/gdscript/
我正在构建一个命令解析器,我已经成功地设法将字符串拆分成单独的单词并使其全部正常工作,但我有点难过的是如何从字符串中删除所有标点符号。用户将输入诸如 , 之类的字符。 ! ?通常,但对于那些字符,它无
当我在 godot 中制作预加载脚本并在其中放置一个变量时,如何在我的其他脚本中调用该变量? 有没有一种特殊的方法来调用我不知道的变量,或者有比预加载脚本更好的方法吗? 最佳答案 如果您正在预加载脚本
我正在尝试弄清楚如何在其视口(viewport)(本例中为根视口(viewport))内“偏移”相机以创建偏心相机。为了说明,使用标准 Camera (3D)导致屏幕中心平行线的消失点: 我想要实现的
我是 godot 引擎的新手,我正在尝试制作手机游戏(仅限肖像模式)。我想让背景图像适合屏幕大小。我怎么做?我是否必须导入具有特定尺寸的图像并将它们全部用于各种屏幕?如果我将图像导入大,它只会剪掉不适
我在 Godot 中有一个项目可以在敌人上方渲染广告牌四边形。四边形(网格实例)是敌人节点的子节点。我只想将四边形渲染到视口(viewport)以进行后处理,但四边形需要在屏幕上具有与敌人相同的位置(
我正在使用 GDscript 在 Godot 中编写一个程序,旨在改变骨架中多个骨骼的位置。骨骼通过我希望骨骼移动到的点减去骨骼的当前位置计算得出的值进行转换。 translateValue = en
想一想您可能需要显示按钮列表的角色扮演游戏。用户可能会进入一个房间,他们必须从一系列选项(按钮)中进行选择。是否有一种容器/面板可以水平显示可点击按钮,但在需要时换行? 我能想到的最好的比喻是,想象一
我正在制作 Godot 的 Hello World 场景。 我没有像教程中演示的那样使用“Hello World”,而是尝试了“ Hello World ”之类的东西,但我发现它不起作用。我在标签文本
我想知道如何创建一个脚本,其中包含我想在多个脚本中使用的方法。我不认为我想为它创建一个全局单例,因为我没有存储任何将在多个场景中保存的全局数据。我收集了一些有用的功能,别无他物。 最佳答案 创建自己的
我对我在新 2D 项目中遇到的问题有疑问。我添加了一个 Sprite 背景,当我运行测试时它显示没有问题。我在输入映射中将 esc 键设置为“key_exit”。然后我创建了一个 node2D 作为
我昨天刚刚开始使用 Godot,我正在开始一个游戏。我为它画了一些 Sprite 表。将动画的所有帧打包到一个图像文件中似乎效率更高,对吗? 无论如何,在 Godot 中,我有一个 AnimatedS
请提供 Godot 中跟随鼠标的 Sprite 的最小代码示例。有复杂的和大的示例项目,但我没有发现任何小而清晰的东西。 最佳答案 将 Sprite 节点放入场景中,并附加以下脚本。 const SP
抱歉,问题标题太长了。我是新来的。 所以我的问题就像上面的标题一样。我几乎尝试了所有方法,并在互联网上到处搜索。我尝试过的一些伪线索是 .linear_interpolate("my screen w
我正在尝试确定哪个 Control节点刚刚改变了焦点。通过将节点上的焦点模式更改为 All,已设置另一个 Control 节点以使用焦点。在该节点的脚本中,我可以通过检查 has_focus 来判断它
我无法将 SliceAndCoagulatorScene 链接到脚本以将其可见设置为 false 我已尝试 get_node、$res://... extends Node2D onready var
我有一个创建循环的 2d 线渲染,我注意到的一个问题是,当以速度循环时它有时无法检测到,我想知道如何阻止这种情况发生,另一个问题是如何让它更宽容例如,如果这条线真的很接近前一条线,我希望它把它算作一个
大量的谷歌搜索,我仍然没有掌握可能是一个简单的解决方案。 场景:“主要”。包含一个 TileMap“Grid”,并附有一个脚本“Grid.gd”。 场景:“玩家”。包含一个带有脚本的 Kinemati
我有以下场景:播放器敌人攻击 当攻击与敌人发生碰撞时,敌人会发出“onHit”信号。 播放器监听该信号并反弹回来。 这一切都很好,但是现在如果我复制敌人所以有多个敌人场景,我如何听所有这些场景的信号?
我正在使用 gdscipt,并且正在尝试设置状态机。我正在尝试访问PlayerStateMachine/PlayerStateMachineManager.gd 通过使用 onready var st
我是一名优秀的程序员,十分优秀!