【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2109|回复: 0

[Godot基础知识] Godot基础教程_【2】_脚本编写【转自9秒】

[复制链接]
发表于 2014-3-10 22:37:29 | 显示全部楼层 |阅读模式
脚本编写
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 上传








注意:转载必须注明出处及原帖链接!违者必究!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-4-29 06:58

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表