GDScript 入门笔记:目录

前言

这套笔记是我从 Unity C# 转学 Godot 时,一边学一边记录下来的。最初只是自己方便回顾,后来整理成比较完整的系列,不知不觉已经写了十七篇。

GDScript 是 Godot 引擎的原生脚本语言,语法接近 Python,但深度集成了 Godot 的节点和场景系统。如果你和我一样有 C# 或 Unity 背景,刚开始可能会觉得它过于"随意",但用久了会发现,它和 Godot 的配合非常自然,写起来很顺手。

这套笔记最大的特点就是:比较简单不会用太多的专业术语 。每篇都配有可运行的代码示例,尽量用游戏里真实的场景说明问题。所有内容基于 Godot 4.x 版本,如果你还在用 Godot 3,需要注意部分语法差异。

这套笔记适合谁

  • 完全没有 GDScript 基础,想系统入门的人
  • 有 Unity / C# 经验,想快速了解 Godot 脚本的人
  • 会一点 Python,想学 Godot 的人(基础部分会很轻松)
  • 已经能写简单 GDScript,但想查漏补缺的人

学完后你能掌握什么

学完这十七篇,你应该能:

  1. 熟练使用 GDScript 的基础语法:变量、运算符、控制流、函数
  2. 正确使用数组、字典、字符串等常用数据结构
  3. 理解类、继承、多态,能设计自己的类结构
  4. 掌握 Godot 的节点生命周期:_init()_ready()_enter_tree()
  5. 会用信号(signal)进行节点间通信,写出低耦合的代码
  6. 理解 Lambda 和闭包,能灵活处理回调
  7. 使用类型注解提升代码质量和编辑器体验
  8. 掌握错误处理和调试技巧,遇到问题知道怎么排查
  9. 理解协程和 await,写异步逻辑不卡主线程
  10. 实现文件读写和存档,会使用 JSON 和 ConfigFile
  11. 理解资源和引用,能加载、使用、自定义资源

换句话说,学完这套笔记,你已经具备了用 Godot 开发小中型游戏所需的所有脚本基础。剩下的就是多写、多练,在实战中积累经验。

目录

第一部分:语言基础

第 1 篇:GDScript 是什么
  • GDScript 的定位与设计目标
  • 和 Python 的相似与不同
  • 和 C# 在 Godot 中的对比
  • 缩进语法与注释写法
第 2 篇:变量与数据类型
  • var 动态类型与类型推断
  • 基础类型:intfloatboolString
  • Godot 内置类型:Vector2Vector3Color
  • 类型注解、@export、常量与空值
第 3 篇:运算符与表达式
  • 算术、比较、逻辑运算符
  • 整数除法与取模的注意点
  • 字符串拼接与格式化
  • inisas 等 GDScript 特有的运算符
第 4 篇:控制流语句
  • if / elif / else
  • match 模式匹配
  • forwhile 循环
  • breakcontinuepassreturn
第 5 篇:函数
  • 函数定义与参数
  • 默认参数值与可变参数
  • 类型注解与返回类型
  • 函数作为一等公民、Lambda 初步
  • 内置回调函数

第二部分:核心数据结构

第 6 篇:数组
  • 创建、访问、修改数组
  • 添加、删除、查找元素
  • 数组切片与复制
  • 类型化数组与多维数组
第 7 篇:字典
  • 字典的创建与访问
  • 增删改查、遍历
  • 嵌套字典与 JSON 互转
  • 字典与数组的配合使用

第三部分:面向对象与对象管理

第 8 篇:类与面向对象
  • extends 继承与 class_name
  • 成员变量与方法
  • 继承、多态、重写、super
  • 静态成员、内部类
  • 成员变量默认值的初始化细节
第 9 篇:构造函数与对象初始化
  • _init() 构造函数
  • _init()_ready() 的区别
  • 完整的生命周期回调顺序
  • 场景实例化传参的替代方案
  • 对象销毁与内存释放

第四部分:Godot 核心机制

第 10 篇:信号
  • 信号的概念与设计意图
  • 使用内置信号
  • 自定义信号的声明与发射
  • 连接与断开信号
  • await 与信号结合
第 11 篇:Lambda 与匿名函数
  • Lambda 的语法与赋值
  • 作为参数传递(map()filter()
  • 闭包的概念与陷阱
  • 与信号配合简化回调

第五部分:进阶语言特性

第 12 篇:类型系统进阶
  • 类型注解的完整写法
  • istypeof()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 的节点哲学、场景树结构和信号通信机制。这些不是看一遍文档就能融会贯通的,需要你亲手写代码、犯错误、然后解决它们。

希望这套笔记能帮你少走一些弯路。

如果发现笔记中有错误或者表述不清楚的地方,欢迎指正。

相关推荐
洋不写bug1 小时前
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
java·开发语言·数据结构·完全二叉树·二叉树结点数·树高·查找结点
果果燕1 小时前
实习笔记(六)主机按钮状态上报完整流程
开发语言·c++·php
山岚的运维笔记1 小时前
mysql 专业笔记 -- 第 17 章:连接:连接三个具有相同名称 ID 的表
运维·数据库·笔记·后端·学习·mysql·dba
想做后端的前端2 小时前
Unity · 性能优化:内存管理完全指南:从托管堆到跨桥开销
unity·性能优化·游戏引擎
又見山2 小时前
用 Obsidian 写了两年的笔记,怎么备份?怎么同步到其他设备上
笔记·obsidian·obsidian插件·obsidian同步·obsidian教程
平头哥技术团队2 小时前
Day 16 | 用 ul、ol、li 一个标签,把散资料收成有序的技能清单页
开发语言·前端·html·html5
zihan5182 小时前
理论:构建“基于客观事实、可量化、闭环自给自足”的个人操作系统
笔记·职场和发展·学习方法
统计学小王子2 小时前
数学建模国赛倒计时 2 天 ——《统计模型精讲(广义线性模型 R 语言实例 + 分析)》
开发语言·数学建模·r语言
Z5998178412 小时前
c#软件开发学习笔记--WPF(MVVM框架)
笔记·学习·c#