tutorial_scripting - seraph526/godot-se GitHub Wiki
脚本
介绍
讲了许多关于不编辑就可以让用户制作游戏的工具.这是许多独立开发者的梦想,不学编程就可以制作游戏.这一需求已经存在了很长时间了,甚至是在公司内部,游戏设计者也希望更多的控制游戏的流程.
许多产品被制作出来承诺无编辑环境,但是往往结果都是不完美的,太复杂或跟传统的代码比没有效率.结果,编辑在这里停滞了很长一段时间.事实上,游戏引擎中通常的做法是增加一些工具以减少为特殊任务重新编码的数量,加快开发的速度.
在这个意义下,Godot为了这个目标做了一些有用的决定策略.首先也是最重要的场景系统.开始,它的目的还不是很明确,但是后来工作的很好.那就是让程序员从架构设计的代码中解放出来.
当使用场景系统设计游戏时,整个项目是碎片化的补充场景(不是各自独立的).各场景间相互补充,而不是各自独立.之后将会有大量的例子,但是要记住这非常重要.
为此有大量的专业编辑知识,这意味着一个不同于MVC的设计模式.Gosot允许放弃MVC模式的一些效率损失,取而代之的是*场景填充(scenes as a complement)*设计模式
Godot脚本也使用extend模式,也就是说脚本可以继承自有可能的引擎类.
GDScript
GDScript (click link for reference)是动态类型脚本语言,以适应Godot引擎,设计它主要有以下几个目标: *第一个,也是最重要的,让它变得简单,熟悉,尽可能的易学. *使代码易读,让错误更安全.语法大部分是借鉴Python.
程序员通常要花几天去学习它,不超过两周就会适应它. 像其他动态类型语言一样,高产出(代码易学,可快速编写,没有编译等等)是以平衡效率为代价的,但是引擎中大部分核心代码是用C++编写的(Vector ops,phsics,math,indexing等等),对大部分类型的游戏来说保证足够的效率.
任何情况下,如果要求更高的运行效率,重要部分的代码可以用C++重写并且暴露给脚本.允许用C++的类替换GDScript类,而不用改变游戏的其他部分.
脚本化场景
在继续之前,确保已经阅读了GDScript相关说明.它是一个简单的语言,说明非常短,看一下不用花太长时间.
场景设置
教程以脚本化一个简单的GUI场景开始.使用增加节点对话框用下面提到的节点创建下面的结构:
- Panel
- Label
- Button 它在场景树中的样子如图所示:
填加脚本
选择Panel节点,然后点击"Add Script"图标:
要编辑脚本,点击上面的按扭(虽然,UI可以让你直接到脚本编辑器界面),以下是script的模板:
信号处理
Signals大多是使用在GUI节点中,(虽然其他节点也有这些).当一些特别的动作发生时会发送Signals,可以连接到任意脚本实例的任何程序.在这个步骤中,按扭上的点击(pressed)信号将被链接到一个自定义的函数. 有个GUI用来连接signals,只要选中节点并点击"Signals"按扭:
为了得到button,要使用如下语句:
get_node("Button")
然后,下一步,挡button点击时,返回调用callback会被填加到脚本.这将会改变label上文本的内容:
func _on_button_pressed():
get_node("Label").set_text("HELLO!")
最终,按扭"pressed"信号会被连接到_ready()中的callback,使用connect().
func _ready():
get_node("Button").connect("pressed",self,"_on_button_pressed")
最终的脚本看起来像这个样子:
扩展Panel
# member variables here, example:
# var a=2
# var b="textvar"
func _on_button_pressed():
get_node("Label").set_text("HELLO!")
func _ready():
get_node("Button").connect("pressed",self,"_on_button_pressed")
运行场景当你按下按扭时,会得到我们预期的效果.
--- //Juan Linietsky 2013/12/08 07:54//