Godot介绍

Godot 引擎是一款自由开源、由社区驱动的 2D 和 3D 游戏引擎!
Godot官方中文文档

Godot 引擎是一款功能丰富的跨平台游戏引擎,可以通过统一的界面创建 2D 和 3D 游戏。
它提供了一套全面的通用工具,因此用户可以专注于制作游戏,而无需重新发明轮子。
游戏可以一键导出到多个平台,包括主流的桌面平台、移动平台、基于 Web 的平台以及主机平台。

Godot 在宽松的 MIT 许可证下完全自由且开源。
用户的游戏乃至引擎的每一行代码,都归用户自己所有。
Godot 的开发完全独立且由社区驱动,允许用户为满足期望而重塑引擎。
它受到非盈利的 Godot 基金会的支持。


基本结构

  1. Godot 开发核心——节点
  • 游戏就是一棵由节点构成的树
  • 大部分节点代表具体的功能
  • 一个节点可有多个子节点
  1. 节点的集合——场景
  • 游戏从主场景开始运行,主场景是游戏的根
  • 其他场景就是枝叶,需要与主场景连接
  1. 场景间的通信兵——信号
  • 信号机制是 Godot 内一种调用函数的机制
  • 节点在发生某些事件时发出信号
  • 无需在代码中硬连接节点就能相互通信

GDScript

介绍

GDScript 是一门面向对象的指令式编程语言
专为 Godot 构建,是游戏开发者为游戏开发所制作的,目的是节省编写游戏代码的时间
其特性包括:

  • 简洁的语法,让文件更轻量。
  • 极快的编译与加载速度。
  • 与编辑器紧密集成,包括节点、信号以及脚本所挂载场景的更多信息等元素的代码补全。
  • 内置向量与变换类型,让海量线性代数计算更高效,游戏必备。
  • 支持多线程,与静态类型语言的一样高效。
  • 没有垃圾回收,因为垃圾回收最终会影响游戏的开发。引擎会默认进行引用计数,在大多数情况下为你管理内存,但你也可以在需要时自行控制内存。
  • 渐进类型。变量默认是动态类型,但你也可以使用类型提示来做强类型检查。

变量

四种基本变量
▪ int
▪ float
▪ String
▪ bool

内置虚函数

内置虚函数指Godot制作组规定的特定名称在特定的条件下自动触发的空函数
常用虚函数:

  1. _init
    对象初始化时调用的第一个方法
    主要用于设置默认属性值或者进行一些基础的初始化工作

  2. _ready
    当节点和其所有子节点都已加入场景树,并且所有资源加载完毕后调用
    非常适合执行需要访问已经完全准备好的节点树的操作,比如查找其他节点、连接信号等

  3. _process
    每帧调用一次,适用于处理需要持续更新的逻辑,如动画、玩家输入响应等
    delta参数表示从上一帧到当前帧的时间间隔,可用于实现帧率无关的逻辑

  4. _physic_process
    与物理引擎同步,每帧调用一次
    适用于处理与物理相关的计算,如移动角色、检测碰撞等
    同样接受一个delta时间参数

  5. _notification(what: int) virtual
    接收到 notification 的通知时此函数自动被调用
    what 以数字的形式来告知此函数具体是接收到了那一个 notification

  6. connect/disconnect/is_connect
    信号连接、取消连接、是否存在对应的信号连接

  7. emit_signal
    发射信号

  8. call 与 call_deffer
    调用或在空闲帧中调用函数

  9. set_script(script)
    设置此对象的 GDS 脚本
    大部分对象都可设置脚本

  10. free ()
    将此对象从内存中移出
    所有对象都可执行 free

函数中的变量

▪ 函数中也可以定义变量,各个函数都拥有一个独立的作用域
▪ 在函数运行结后变量和变量所代表的数据会自动销毁。某些情况下,变量所代表的数据不会自动销毁,但变量一定会自动销毁。

继承

内置继承:Godot 中的节点都存在继承关系,Object 是所有对象的基类
自定义继承:extends class_name 或“路径”

super 用法
调用父类中的函数
▪ super()
▪ super. 函数名()

单例

内置单例主要成员是各类 Server,开发者可以使用它们直接控制游戏程序的图形与音效等内容
自定义单例必须是节点类型对象,是开发者自定义的全局对象
Input 单例
在_process 或_physic_process 中通过 Input单例 来获取按键情况
这种一秒数十次检测游戏输入情况的编码方式称为轮询
if + 轮询 + 修改内置变量 = 游戏在玩家的控制中响应

自定义单例
自定义单例步骤

  • 在项目设置中选择自动加载。
  • 选择脚本路径
  • 点击添加
    自定义单例特征及用途
  • 可以在任意一个脚本中对它们进行直接访问
  • 用于记录全局变量

get_node()

get_node()与相关函数用法展示$
$ 是 get_node() 的简写
①获取(所有)直接子节点 ▪ get_child() / get_children()
②获取直接父节点 ▪ get_parent() ▪ get_node(“..”)
③获取多级子 / 多级父节点 /
④获取所有的直接子节点 get_children()