跳转到内容

Godot 游戏引擎指南/信号和方法

100% developed
来自维基教科书,开放世界中的开放书籍

如果你向 Godot 用户寻求编码建议,他们经常会说“信号上移,调用下移”。这到底是什么意思呢?

从场景面板中选择一个节点。按下检查器旁边的“节点”选项卡。将出现一个列表。这些是信号

创建一个新场景。按下用户界面。将其保存为Signal test.tscn。添加两个节点:一个按钮和一个标签,两者都是控制的子节点。使用布局按钮将按钮居中到屏幕上。在检查器中将文本属性设置为按下我

现在将脚本添加到控制根节点(第一个节点)。选择按钮。打开节点面板,双击“button_up()”。将弹出一个窗口,其中选择了场景根节点(控制节点)。文本编辑应该显示_on_Button_button_up。按下“连接”。

这将创建以下代码

func _on_Button_button_up():
  pass # Replace with function body.

当信号button_up发出时,将调用此函数。将代码print("你按下了我!")添加到该函数中。如果你愿意,可以删除pass # Replace with function body.

通过按下 F6 运行场景,并满足该按钮的愿望!

你可以在 GDScript 中使用signal <signal_name> <optional:(argument1: type, argument2: type, ect)>创建自己的信号。在函数中发出它:emit_signal(<"signal_name">, <argument1>,<argument2 ect.>)

与信号一样重要,调用允许发生很多事情。将$Label.text = "你按下了我!"添加到该函数中。这实际上是在设置一个变量,但它仍然被认为是调用,因为设置变量使用 setter 函数。更多信息将在另一章中介绍。

$pathget_node(path)函数的简写。Label 是路径参数。这允许直接操作该名称的子节点。

这些被称为节点路径。它们的工作方式有点像文件路径,这是一个常见的例子:$weapon/art.texture = preload("res://assets/weapons/upgraded_sword.png"),并且也可以是相对的,例如(在res://game/player.gd中调用)/weapons/upgraaded_sword.tscn

一个全局get_node看起来像/root/game/player/weapon/art

有关更多信息,请参见GDScript:操作场景树.


信号上移,调用下移

[编辑 | 编辑源代码]

这意味着,如果你正在调用另一个节点上的方法,请使用信号来调用父节点(以降低代码复杂度),并在调用子节点时使用方法(以提高可读性和自由度)。

你学到了什么

[编辑 | 编辑源代码]
  1. 如何获取子节点。
  2. 如何连接信号。
  3. 如何设置另一个节点的属性(使用“.”。你也可以用它来调用它们的函数!)


1 你用什么来获取节点?

$NodeName
get_node("NodeName")
get_child("NodeName")

2 节点路径是否像文件路径?

3 你应该以哪种方式调用?

向下
向上


Godot 游戏引擎指南

入门 [编辑]
安装
什么是节点?
编程
资源和导入
信号和方法
你的第一个游戏
让它运行
调试
输入
物理
保存和加载
多人游戏
让它看起来更好
UI 皮肤
动画
高级帮助
服务器(单例)
平台特定
优化
加密
导出
插件
杂项
有用链接
作者和贡献者
打印版


<-- 上一页 返回顶部 下一页 -->


华夏公益教科书