Godot学习笔记4——函数

GDScript中函数也叫方法或模块,与变量一样,包括自定义函数与内置函数。大部分内置函数可以对游戏内容产生实质性影响,少部分函数比较特殊。

一、函数定义

在Godot中,我们使用“func”来定义函数,后面跟函数名、括号和冒号,下面一行缩进跟一个“pass”,这个“pass”并无任何意义,只是一个函数的结构。

函数的命名规则与变量的命名规则一致,打头的必须是字母或下划线,组成元素必须为字母、数字、下划线。

函数有三个关键信息,分别是输入信息、处理流程和处理结果。

二、函数调用

函数也是属于不同对象的,所以我们在调用函数时也必须指明函数的所属。我们在Godot中写下如下代码:

运行,即可看到编译器输出了“Hello”,证明函数调用成功。

这里的“self.”代表此函数是节点内部的,此处可省略。

我们再在Godot中写下如下代码:

编译运行后,可以看到输出了2,而没有输出“Hello”,这是因为在函数add中,我们已经把c的值“return”了出去,所以下一行代码就不会执行了。打开警告栏,可以看到编译器对代码发出了警告:

在这里,“add”函数被我们改造成了带参函数。当我们调用add函数时,需要传给它两个实参,而add函数在这里的作用是将两个值相加,并返回。

在具体代码中,a和b为形参,传入的(1,1)为实参。具体概念可查看相关文档。在这里,我们不仅可以定义所需参数的个数,也可以定义所需参数的类型,还可以给参数设定一个默认值,当调用时没有值传入就会使用默认值: 

可以看到,运行结果为17。

我们也可以给它传值,此时会覆盖原有的默认值:

可以看到,输出结果为3而不是17。 

我们不仅可以定义所需参数的类型,也可以定义整个函数的类型:

在函数定义之后加一个“->”,指向一种类型,然后运行,可以看到结果是5,小数部分被舍掉了。 

三、虚函数与内置虚函数

 虚函数是指没有实际处理流程的函数,这部分函数的内容可以由我们自行编写。而内置虚函数则是指Godot的制作组规定了特定名称却没有实际处理流程的函数。节点内的虚函数会在特定的条件下自动被触发。

例如:

条件1:当节点本身或其周围节点状态发生改变时,节点内部的某些虚函数就会被触发,如:

  • 节点创建
  • 节点进入“场景树”
  • 节点离开“场景树”
  • 节点死亡前
  • 节点的子节点全部加入场景树

 条件2:当场景树的状态发生改变时,且节点自身处于“树”下。如:

  • 画面刷新
  • 物理引擎刷新
  • 硬件设备输入

条件3:其他情况 

常用虚函数:

  1. _init:当节点被创建时进行调用的虚函数
  2. _ready:节点的所有子节点加入场景树时调用的虚函数
  3. _process: 每当画面刷新时(每一帧)调用的虚函数
  4. _physic_process:物理引擎刷新时调用的虚函数

需要注意的是,3和4两个函数内部都有一个名为delta的参数,代表距离上次画面刷新或物理引擎刷新所经过的时间。

四、函数中的变量 

每一个函数都有一个内部的作用域,在一个函数内部定义的变量无法在另一个函数中直接访问。在函数运行结束时,函数内部的变量会自动销毁。在某些情况下,变量所代表的数据不会自动销毁,但变量一定会自动销毁。

不同函数内部的变量不能直接访问
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风痕天际

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值