前言
这套笔记是我从 Unity C# 转学 Godot 时,一边学一边记录下来的。最初只是自己方便回顾,后来整理成比较完整的系列,不知不觉已经写了十七篇。
GDScript 是 Godot 引擎的原生脚本语言,语法接近 Python,但深度集成了 Godot 的节点和场景系统。如果你和我一样有 C# 或 Unity 背景,刚开始可能会觉得它过于"随意",但用久了会发现,它和 Godot 的配合非常自然,写起来很顺手。
这套笔记最大的特点就是:比较简单不会用太多的专业术语 。每篇都配有可运行的代码示例,尽量用游戏里真实的场景说明问题。所有内容基于 Godot 4.x 版本,如果你还在用 Godot 3,需要注意部分语法差异。
这套笔记适合谁
- 完全没有 GDScript 基础,想系统入门的人
- 有 Unity / C# 经验,想快速了解 Godot 脚本的人
- 会一点 Python,想学 Godot 的人(基础部分会很轻松)
- 已经能写简单 GDScript,但想查漏补缺的人
学完后你能掌握什么
学完这十七篇,你应该能:
- 熟练使用 GDScript 的基础语法:变量、运算符、控制流、函数
- 正确使用数组、字典、字符串等常用数据结构
- 理解类、继承、多态,能设计自己的类结构
- 掌握 Godot 的节点生命周期:
_init()、_ready()、_enter_tree()等 - 会用信号(signal)进行节点间通信,写出低耦合的代码
- 理解 Lambda 和闭包,能灵活处理回调
- 使用类型注解提升代码质量和编辑器体验
- 掌握错误处理和调试技巧,遇到问题知道怎么排查
- 理解协程和
await,写异步逻辑不卡主线程 - 实现文件读写和存档,会使用 JSON 和 ConfigFile
- 理解资源和引用,能加载、使用、自定义资源
换句话说,学完这套笔记,你已经具备了用 Godot 开发小中型游戏所需的所有脚本基础。剩下的就是多写、多练,在实战中积累经验。
目录
第一部分:语言基础
第 1 篇:GDScript 是什么
- GDScript 的定位与设计目标
- 和 Python 的相似与不同
- 和 C# 在 Godot 中的对比
- 缩进语法与注释写法
第 2 篇:变量与数据类型
var动态类型与类型推断- 基础类型:
int、float、bool、String - Godot 内置类型:
Vector2、Vector3、Color - 类型注解、
@export、常量与空值
第 3 篇:运算符与表达式
- 算术、比较、逻辑运算符
- 整数除法与取模的注意点
- 字符串拼接与格式化
in、is、as等 GDScript 特有的运算符
第 4 篇:控制流语句
if/elif/elsematch模式匹配for、while循环break、continue、pass、return
第 5 篇:函数
- 函数定义与参数
- 默认参数值与可变参数
- 类型注解与返回类型
- 函数作为一等公民、Lambda 初步
- 内置回调函数
第二部分:核心数据结构
第 6 篇:数组
- 创建、访问、修改数组
- 添加、删除、查找元素
- 数组切片与复制
- 类型化数组与多维数组
第 7 篇:字典
- 字典的创建与访问
- 增删改查、遍历
- 嵌套字典与 JSON 互转
- 字典与数组的配合使用
第三部分:面向对象与对象管理
第 8 篇:类与面向对象
extends继承与class_name- 成员变量与方法
- 继承、多态、重写、
super - 静态成员、内部类
- 成员变量默认值的初始化细节
第 9 篇:构造函数与对象初始化
_init()构造函数_init()与_ready()的区别- 完整的生命周期回调顺序
- 场景实例化传参的替代方案
- 对象销毁与内存释放
第四部分:Godot 核心机制
第 10 篇:信号
- 信号的概念与设计意图
- 使用内置信号
- 自定义信号的声明与发射
- 连接与断开信号
await与信号结合
第 11 篇:Lambda 与匿名函数
- Lambda 的语法与赋值
- 作为参数传递(
map()、filter()) - 闭包的概念与陷阱
- 与信号配合简化回调
第五部分:进阶语言特性
第 12 篇:类型系统进阶
- 类型注解的完整写法
is、typeof()、get_class()的区别- 类型转换:
as与强制转换 - GDScript 的泛型限制与替代方案
第 13 篇:字符串操作
- 字符串创建与拼接
%和format()格式化- 常用字符串方法:
find()、split()、replace()等 - 字符串与数字互转、比较
第六部分:调试与异步
第 14 篇:错误处理与调试
print()、print_debug()、push_error()等调试输出assert()断言的使用- 断点调试的基础
- 常见运行时错误及预防
第 15 篇:协程与异步
await的基本用法- 等待时间、信号、其他协程
- 实际应用场景:波次生成、延迟执行、逐帧等待
- 和 Unity 协程的对比
第七部分:数据与资源
第 16 篇:文件读写与数据持久化
FileAccess读写文本文件- JSON 持久化
ConfigFile配置存储- 二进制文件读写与目录操作
第 17 篇:资源与引用
- 资源(Resource)的概念
preload()与load()的区别- 导出资源引用(
@export) - 自定义资源类
- 资源的缓存与释放
学习路线建议
如果你完全零基础:从第 1 篇开始按顺序读,每篇的代码示例都自己敲一遍。不要跳读,基础部分虽然简单,但后面会反复用到。
如果你有其他语言基础(C#、Python 等):可以快速浏览第 1-5 篇,重点看和你知道的语言不同的地方。然后从第 6 篇开始正常推进。
如果你只想快速上手做游戏:先把第 1-4 篇过一遍(语言基础),然后重点看第 8-10 篇(类、初始化、信号),这三篇是 Godot 脚本的核心。其余的用到再查。
最后说几句
写这套笔记的过程,也是我自己理清思路的过程。GDScript 虽然简单,但简单不代表没有深度。真正用好它,需要理解 Godot 的节点哲学、场景树结构和信号通信机制。这些不是看一遍文档就能融会贯通的,需要你亲手写代码、犯错误、然后解决它们。
希望这套笔记能帮你少走一些弯路。
如果发现笔记中有错误或者表述不清楚的地方,欢迎指正。