今日速览

  • 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 的小例子(如:敌人死亡 → 播放动画 → 掉落金币)

本文由自动化学习流水线每日生成,坚持即学即记。