函数
函数的概念
-
函数也叫方法或模块,是一套操作的集合。函数也包括自定义函数与内置函数。当它被调用时执行的可重复使用的代码块
-
大部分内置函数可以对游戏内容产生实质性的影响或在代码中起到传递数据的作用。少部分函数比较特殊。
-
一个函数除名称外,还包括了 【输入信息、处理流程、处理结果】等关键信息。在程序中,一切数据的处理流程都要通过调用函数来实现。
-
函数调用一般必须指明调用对象
-
空函数需要使用pass关键字
func sayHello():
# 执行代码 -
调用带参数的函数,在调用函数时,您可以向其传递值,这些值被称为参数。
func sayHello(param1, param2):
# 执行代码 -
带有返回值的函数,有时,我们会希望函数将值返回调用它的地方,通过使用 return 语句就可以实现。
-
return方法可以指定返回的类型
func sayHello(param1, param2):
# 执行代码
return x
内置虚函数的调用
- 虚函数是指没有实际处理流程的函数,这部分函数的内容可以由我们自行编写。而内置虚函数则是指 Godot 的制作组规定了特定名称却没有实际处理流程的函数。节点内的虚函数会在特定的条件下自动被触发。
- 条件 1:当节点本身或其周围节点状态发生改变时。【节点创建、节点入"树"、节点出"树"、节点死亡前、节点的子节点全部加入场景树·】
- 条件 2:当场景树的状态发生改变时,且节点自身处于"树"下。【画面刷新、物理引擎刷新、硬件设备输入】
- 条件 3:其他情况。
- 常用虚函数:
_init,ready,_process,_physic_process
函数中的变量
-
函数中也可以定义变量,各个函数都拥有一个独立的作用域,在一个函数内部定义的变量无法在另一个函数中直接访问变量名。
-
在函数运行结束后变量和变量所代表的数据会自动销毁。某些情况下,变量所代表的数据不会自动销毁,(后续教程提及)但变量一定会自动销毁。
-
局部作用域,变量在函数内声明,变量为局部作用域,只能在函数内部访问
此处不能调用 carName 变量
func myFunction():
var carName = "Volvo";
# 函数内可调用 carName 变量 -
全局变量,变量在函数外定义,即为全局变量,整个脚本文件中都可以使用
var carName = " Volvo";
此处可调用 carName 变量
func myFunction():
# 函数内可调用 carName 变量
运算符
-
算术运算符
- 加法 x=y+2 7 5
- 减法 x=y-2 3 5
- 乘法 x=y*2 10 5
/ 除法 x=y/2 2.5 5
% 取模(余数) x=y%2 1 5
-
赋值运算符,赋值运算符用于给 GdScript 变量赋值
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
= x=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0 -
比较运算符,比较运算符在逻辑语句中使用,以测定变量或值是否相等
== 等于 x==8 false
!= 不等于 x!=8 true大于 x>8 false
< 小于 x<8 true
= 大于或等于 x>=8 false
<= 小于或等于 x<=8 true -
逻辑运算符,逻辑运算符用于测定变量或值之间的逻辑。
&& and (x < 10 && y > 1) 为 true
|| or (x==5 || y==5) 为 false
! not !(x==y) 为 true
条件语句
if 的作用
- 通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。
- 使用 if 可以在函数中设置情况分支,起到控制数据处理流程的作用
elif 以及 else
- elif 是 if 的补充,一个 if 可以有无数个 elif 对其进行补充。
- 当所有的 if 与 elif 判断失败时,程序执行 else 内部内容。一个 if 后只能有一个对应的else
作用域
-
一个 if 与它对应的 elif 以及 else 都有各自独立的作用域,作用域内定义的变量互相独立。
-
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
if (condition):
当条件为 true 时执行的代码 -
if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
if (condition):
当条件为 true 时执行的代码
else:
当条件不为 true 时执行的代码 -
if...else if...else 语句- 使用该语句来选择多个代码块之一来执行
if (condition1):
当条件 1 为 true 时执行的代码
elif (condition2):
当条件 2 为 true 时执行的代码
else:
当条件 1 和 条件 2 都不为 true 时执行的代码 -
match(switch) 语句 - 使用该语句来选择多个代码块之一来执行
10. 循环语句
while的作用
- 循环可以将代码块执行指定的次数,如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的
while 的使用方法
- while 与 if 写法一致,但没有 elif 与 else
- 当 while 内部模块执行完毕时,程序会再次判断 while 是否成立,若成立则会继续执行 while 内容。
while 的注意事项
-
避免死循环。要设置破坏循环条件的代码。
-
while 也会产生一个作用域,效果同 if。
-
for
-
while
-
break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)
-
continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代