建立如下的场景与节点:
修改label的text和修改button的text
在node2d上添加脚本,进入编辑器
_ready() 函数在节点及其所有子节点进入活动场景时调用, 注意: _ready() 并不是构造器;构造器是 _init()。
脚本为节点添加行为。它用于控制节点的功能以及它如何与其他节点交互:子节点、父节点、同级节点等。
脚本的作用域是它附着的节点。
当某种特定行为发生时,信号会被“触发”,并且它们可以连接到任意脚本实例的任意函数。
信号主要用于GUI节点,不过其他节点也有信号,甚至可以在自己的脚本里定义自定义信号。
将“pressed(按下)”信号连接到一个自定义函数上。形成连接是第一部分,定义自定义函数是第二部分。
对于第一部分,Godot提供了两种创建连接的方式:通过编辑器的可视化界面或通过代码。
- 编辑器可视化界面法
在场景树中选择Button节点,然后选择“节点”选项卡。接下来,确保选中了“信号”选项。
再点右下方的连接,弹出对话框。
在脚本编辑器中会自动出现method in mode函数,输入
get_node("Label").text = "HELLO!"
get_node()的含义是获取节点的位置
运行场景:
鼠标点选:
- 代码法
由于Button和Label是有脚本附加的node2d下的子节点,因此可以通过在 _ready() 函数下输入以下内容来获取Button引用:
先删除信号连接,通过 Object.connect() 来连接按钮的 “pressed” 信号到 _ready()
func _ready():
get_node("Button").connect("pressed", self, "_on_Button_pressed")
最后的效果是一样的。
注意 get_node(path) 的工作原理。对于给定节点, get_node(path) 搜索它的直接子节点。
在上面代码中,Button必须是node2d的子项。如果Button是Label的子项,则获得它的代码是
get_node("Label/Button")
信号
信号是Godot版本的观察者模式。它允许一个节点发送消息到其他节点,令其他节点也可以监听和响应这个消息。
比如当按键按下时信号就会发出,而不是不停地检查按键是否被按压。
信号是一种 解耦 游戏对象的方法,从而使代码更有条理,更易于管理
它们可以对任何感兴趣的可以订阅的对象发出信号和响应,而不是强制游戏对象去期望其他对象始终存在。
Godot的许多内置节点类型都提供可以用来检测事件的信号。
并且你还可以用代码signal自定义信号,emit发射信号。
signal my_signal
func _ready():
emit_signal("my_signal")
实践官方教程
第一步:
下载范例提供的图片,放入新建项目。
单击“添加/创建一个新节点”按钮,