脚本编写 GDScript是Godot中使用的动态类型脚本语言,它是以下面的目标来设计的: n 首先,也是最重要的,简单,常见,尽可能的易学。 n 代码的可读性好,安全。语法主要借鉴于Python 程序员通常只需要几天来学习它,两周内就会觉得非常顺手。 编写脚本场景 继续之前,请确认你读过GDScript的语言参考。 场景设定 本教程将以编写一个简单的GUI场景脚本开始。按下面的层级关系用添加节点: n Panel u Label u Button 在场景树中看起应该是这样:
做成如下图这样,并保存成sayhello.scn:
添加脚本
选择Panel节点,点击“创建脚本”按钮,如下图:
点击后弹出创建脚本对话框,这个对话框允许选择语言,类名等。GDScript不会在脚本文件中使用类名,所以这个字段是不可编辑的。脚本需要从“Panel”继承。写上文件名,如果之前保存过场景,此处会自动生成以场景名命名的脚本,如这里是sayhello.gd。点击创建。
脚本会被创建并添加到节点上。可以看到Panel节点后面的图标和属性面板中的Script:
编辑脚本,会看到脚本脚本模板如下:
这里没有太多的代码,当节点(和他的所有子节点)进入活动场景时,“_ready()”函数会被调用。(注意,这个不是构造函数,构造函数是“_init()”) 处理信号(这里用的是Signal而不是Event,就先这样叫吧) 在GUI结点中,信号被大量使用(虽说其他节点也有他们)。当一些特定类型的动作发生时,信号被“射出”,并且可以连接到任何脚本实例的任何函数。在此步骤中,从按钮发出的“pressed”信号会被连接到自定义的函数。
这里有一个GUI来连接信号,选择节点并且按上面那个“编辑节点连接“的按钮:
点击后会显示Button能够发出的信号列表:
但是这个示例中我们不用它。我们不想让事情变得太简单。所以,请关掉早面的窗口!无论如何,在这一点上很明显的是,我们对“pressed“信号产生的兴趣。所以我们不用可视化的操作接口,我们将用代码来完成这个连接。 对此,这有一个方法可能会是Godot程序员用的最多的,就是get_node()。这个方法在当前树或者场景中其他的任意地方用路径来获取节点,
获取按钮,用下面的方法: [mw_shl_code=csharp,true]get_node("Button")[/mw_shl_code] 因此,下一步当一个按钮按下时,可以添加回调函数。以下将会改变Label的文本值:[mw_shl_code=csharp,true]func _on_button_pressed(): get_node("Label").set_text("Hello 9miao!")[/mw_shl_code]
最后,在_ready()中用connect()函数来连接按钮的“pressed”信号。[mw_shl_code=csharp,true]func _ready():
get_node("Button").connect("pressed",self,"_on_button_pressed")[/mw_shl_code]最终的代码应该是这样:[mw_shl_code=csharp,true]extends Panel
# member variables here, example:
# var a=2
# var b="textvar"
func _on_button_pressed():
get_node("Label").set_text("Hello 9miao!")
func _ready():
get_node("Button").connect("pressed",self,"_on_button_pressed")[/mw_shl_code]运行场景获取到预期的结果:
[size=0.83em]9.jpg (9.13 KB, 下载次数: 125)
下载附件 保存到相册
[color=rgb(153, 153, 153) !important]2014-2-17 11:15 上传
注意:转载必须注明出处及原帖链接!违者必究!
|