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的参数,代表距离上次画面刷新或物理引擎刷新所经过的时间。

四、函数中的变量 

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

不同函数内部的变量不能直接访问

相关推荐

  1. numpy学习笔记4),通用函数

    2024-07-20 20:28:01       158 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 20:28:01       172 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 20:28:01       190 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 20:28:01       158 阅读
  4. Python语言-面向对象

    2024-07-20 20:28:01       171 阅读

热门阅读

  1. opencv读写路径包含中文的文件

    2024-07-20 20:28:01       34 阅读
  2. 探索Web世界:WebKit的地理位置API

    2024-07-20 20:28:01       37 阅读
  3. OpenCV从基础到入门(基于python)

    2024-07-20 20:28:01       28 阅读
  4. 运维 | Linux 系统中 MySQL 的安装与使用记录

    2024-07-20 20:28:01       31 阅读
  5. GPT-4o 与 GPT-4o Mini:两者的区别和特点

    2024-07-20 20:28:01       33 阅读
  6. GO Channel使用详解(各种场景下的最佳实践)

    2024-07-20 20:28:01       27 阅读
  7. Linux输出重定向到文件立即输出

    2024-07-20 20:28:01       33 阅读
  8. buuctf-reverse write-ups (1)

    2024-07-20 20:28:01       24 阅读
  9. Android init.rc各阶段的定义和功能

    2024-07-20 20:28:01       36 阅读
  10. tebi.io免费对象存储,可托管静态网站

    2024-07-20 20:28:01       34 阅读