今日速览
- GDScript 是 Godot 官方脚本语言:面向对象、命令式、渐进类型,缩进语法接近 Python,但完全独立、专为 Godot 深度优化。
- 核心心智:一个 .gd 文件就是一个类,用
extends继承节点类型,用class_name注册全局类名。 - 必会三件套:
var变量、func函数、signal信号;进阶必会match(强大的模式匹配分支)和await(协程等待)。 - 类型可选:
var x = 5动态类型,var x: int = 5静态类型,:=自动推断。先动态跑通、后加类型,是 AI 辅助开发的最佳节奏。 - GDScript 标识符支持 Unicode(甚至可以写中文变量名),但建议变量用英文、注释用中文,方便 DeepSeek 生成和阅读。
核心学习内容
1. GDScript 到底是什么
官方文档定位:GDScript 是一种高层级、面向对象、命令式、渐进类型的编程语言,专为 Godot 构建。注意两点:它语法像 Python 但不是 Python;它和 Godot 引擎深度集成——Vector2、Node 这些类型是语言内建的一部分,写游戏逻辑几乎不需要引第三方库。
一个文件就是一个类,最简骨架:
extends CharacterBody2D # 继承自哪个节点类型
class_name Player # 可选:注册为全局类名
var speed: float = 300.0 # 成员变量(可带类型)
func _ready(): # 节点进入场景树时执行一次
print("玩家就绪")
func _process(delta): # 每帧执行,delta 是上一帧耗时(秒)
position.x += speed * delta
2. 五个必会语法点
- 变量:
var声明,const定义常量,enum定义枚举;var v: int静态类型,var v := 10让编译器按初值推断类型,var v = 10完全动态。 - 函数:
func 名字(参数: 类型 = 默认值) -> 返回类型:,缩进即代码块,return返回值,pass占位。 - 分支循环:
if / elif / else、for i in range(10)、while,以及 GDScript 招牌的match——类似其他语言的 switch,但支持模式、区间和守卫条件,写敌人 AI 状态机特别顺手。 - 信号 signal:节点间解耦通信的核心。
signal 死亡声明,死亡.emit()发出,其他节点用connect或$节点.死亡.connect(回调)订阅。这是 Godot 的「事件系统」。 - await 协程:
await 某信号可以暂停函数等事件再继续。典型用法:等动画播完再执行下一句,避免写嵌套回调地狱。
3. 标识符与命名建议
标识符只能由字母、数字、下划线组成且不能以数字开头,区分大小写(foo ≠ FOO)。官方允许 Unicode 标识符,但实战建议:变量/函数用英文,# 注释用中文,两者结合最利于 DeepSeek 理解意图——英文标识符保证代码在 AI 语料中的兼容性,中文注释保留你的设计意图。
🎯 DeepSeek 提示词
提示词 1:让 DeepSeek 当 GDScript 私教
适用场景:遇到一个看不懂的语法点(如 match、await、@export),让它用零基础能懂的方式讲透。
你是资深的 Godot 4 游戏开发者兼编程老师,擅长用大白话教学。请给我讲清楚 GDScript 的「{match 语句}」这个语法。
【要求】
1. 先用一句话说它是干什么的
2. 用「新手常犯的错误写法」vs「正确写法」对比展示
3. 给一个在 2D 平台跳跃游戏里实际用得上的完整小例子(15 行以内)
4. 最后用 2 句话总结什么时候该用它、什么时候不该用
我没有任何编程基础,请用类比帮助理解,不要堆术语。
提示词 2:把「功能需求」直接变成 GDScript 脚本
适用场景:脑子里的玩法需求 → 可直接粘贴运行的脚本。这是每天用得最多的提示词。
你是熟练的 Godot 4.x GDScript 开发者。请根据以下需求写一个脚本。
【需求】
- 节点:CharacterBody2D(玩家角色)
- 功能:按左右方向键移动;按空格跳跃,且只有着地时才能跳;碰到敌人时发出 signal 并进入 2 秒无敌闪烁
【硬性约束】
- 用 @export 暴露所有手感参数(移动速度、跳跃力度、重力、无敌时长),方便我在 Inspector 调试
- 用中文注释解释每段逻辑,特别是物理相关计算
- 输出格式:① 完整脚本代码(可直接粘贴到 .gd 文件)② 节点树清单(有哪些子节点、挂什么形状)③ 可能报错的 2 个坑
提示词 3:给 AI 写的动态类型代码「加静态类型」
适用场景:让 DeepSeek 先快速写出能跑的版本,再让它把类型补全——兼顾「跑得快」和「后期可维护」。
你是 Godot 4 的代码质量工程师。请对下面的 GDScript 做「类型补全」重构。
【规则】
1. 所有成员变量补上明确类型(如 : int、: float、: String、: Node2D)
2. 函数参数和返回值补上类型标注,没有返回值用 -> void
3. 把魔法数字提取为 @export 或 const
4. 不改动任何功能逻辑与变量命名
【输出】
- 重构后的完整代码(只输出代码,不要解释)
- 若某处无法确定类型,用注释标出 TODO 并说明原因
【原代码】
(在此粘贴 DeepSeek 之前生成的脚本)
学习心得
第 1 天定了「用 Godot + DeepSeek 做游戏」,第 2 天就把这门「方言」的字母表学会了。对零基础来说,GDScript 是极友好的第一门语言:语法量小、报错信息直白、和编辑器深度绑定,学 30 分钟就能看懂 AI 生成的代码——这一点至关重要,因为用 AI 写游戏的前提是「AI 写得出,你看得懂,跑错了能描述清楚」。今天的三条提示词形成了一个闭环:看不懂语法→问 AI(提示词 1);有需求→让 AI 写(提示词 2);写完了→让 AI 补类型提质量(提示词 3)。这个「学-写-修」循环就是以后每天的日常。
明日关注
- 在 Godot 里新建项目,跑通「节点 + 脚本 + print」的 Hello World
- 用提示词 2 生成玩家移动脚本,调整 @export 参数体会手感变化
- 动手写一个 signal + await 的小例子(如:敌人死亡 → 播放动画 → 掉落金币)
本文由自动化学习流水线每日生成,坚持即学即记。
评论