📜  Godot中的脚本场景

📅  最后修改于: 2021-01-02 09:56:47             🧑  作者: Mango

在Godot中编写场景脚本

我们将建立一个包含按钮和标签的GUI场景,按此按钮将更新标签。它将演示:

  • 编写脚本并将其附加到任何节点。
  • 我们通过信号连接UI元素。
  • 我们正在编写一个可以访问视图中其他节点的脚本。

在继续之前,请务必阅读GDScript参考。它是一种设计得很简单的语言,并且文本简短,因此概述这些概念所用的时间不会超过几分钟。

场景设定

使用“场景”选项卡(或按ctrl + A)访问的“添加子节点”对话框来创建具有给定节点的层次结构:

  • 面板
    • 标签
    • 纽扣

场景树如下所示:

使用2D编辑器调整按钮和标签的大小和位置,使其看起来像下面的图像。我们可以从检查器选项卡设置文本。

最后,我们必须使用诸如sayhello.tscn之类的名称保存场景。

添加脚本

右键单击面板节点,然后从上下文菜单中选择“附加脚本”:

脚本创建对话框将弹出。此对话框使我们可以设置类名称,脚本语言和其他适用的选项。

在GDScript中,该文件表示类本身,因此类名称字段不可编辑。

我们与脚本关联的节点是一个面板,因此旧版字段将自动填充“面板”。这就是我们想要的,因为脚本的目的是扩展面板节点的功能。

最后,输入脚本的路径名,然后选择创建。

将创建脚本并将其添加到节点。我们可以在“场景”选项卡中的节点旁边以及检查器下方的“脚本”选项卡属性中看到类似“ OpenScript”图标的图标:

要编辑任何脚本,请选择这两个按钮中的任何一个,这些按钮在上图中突出显示。这将带我们到脚本编辑器,其中可以包含默认模板:

当节点及其子节点进入活动场景时,将调用_ready()函数。

注意:-ready()不是构造函数,而是_init()。

脚本的作用

脚本将行为添加到节点。它用于控制节点的工作方式以及与其他节点(子代,父母,兄弟姐妹等)的交互方式。脚本的本地区域是节点。换句话说,脚本节点提供的功能是继承的。

处理信号

当某种特定类型的动作发生时,信号被“发出”,并且它们可以与任何实例的任何函数相关联。信号主要用于GUI节点,尽管其他节点也有信号,我们也可以在脚本中定义自定义信号。

在这一步中,我们将“抑制”信号连接到自定义函数。创建连接是第一部分,定义自定义函数是第一部分的第二部分。 Godot提供了两种建立链接的方式:通过可视界面,通过编辑器商品或代码。

在本系列教程的其余部分中使用代码方法时,让我们介绍一下编辑器界面的工作方式,以备将来参考。

在视图树中选择按钮节点,然后选择“节点”选项卡。接下来,确保选择了“ Signals”。

如果然后在“ BaseButton”下选择“ pressed()”并单击右下角的“ Connect ..”按钮,将打开连接创建对话框。

左下方是创建连接所需的关键内容:一个实现我们要触发的方法的节点(在此表示为NodePath )以及触发方式的名称。

左上部分显示场景节点的列表,其中发射节点的名称以红色突出显示。在此处选择“面板”节点。
当我们选择一个节点时,底部的节点路径将自动更新,以指出从释放节点到所选节点的相对路径。

默认情况下,该方法包含发射节点的名称(在这种情况下为“ button ”),结果为“ _on_ [EmitterNode] _ [signal_name]”。如果我们确实选中了“ Make 函数”复选框,那么编辑器将为我们建立连接建立函数。

并总结了有关如何使用可视界面的指南。但是,这是一个脚本教程,因此,为了学习,让我们深入研究手动过程!

完成此操作后,我们将介绍Godot程序员最常用的函数: Node.get_node ()。此函数使用路径在相对于脚本拥有的节点的任何位置获取节点。

为了方便起见,请移除展开面板下方的所有内容。我们将手动填充其余脚本。

由于面板底部的按钮s和标签s是连接脚本的兄弟姐妹,因此我们已经可以通过在_()函数下方键入来调用按钮:

运行场景并按按钮。我们应该得到以下结果:

为什么在那里!恭喜您编写了第一个场景脚本。

注意:关于本教程的一个常见误解是get_node(PATH)的工作方式。对于节点,get_node(PATH)搜索其直接子节点。在上面的代码中,这意味着该按钮必须是Panel的子级。如果该开关是该标签的子代,则获取该代码的代码将是;

另外,请记住,节点是通过名称而不是类型来引用的。

注意:“连接”对话框的右侧面板用于将特定值绑定到所连接函数的参数。我们可以添加和删除许多类型的值。代码方法还使用4A数组参数启用它,默认情况下为空。随意阅读该对象。连接方法以获取更多信息。