Agent Skills
返回列表
💻

Godot GDScript 编程

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-gdscript-k25y。

技能介绍

要解决什么问题

在 Godot 4.x 里写或改 .gd 脚本时,常见痛点是:静态类型没写全导致解析期才发现错误、3.x 迁到 4.x 后信号与 yield 语法直接报错,以及把节点引用写在 _init() 里、在 _process 里做物理移动这类「能跑但不稳」的用法。本技能面向 Godot 4.3+(GDScript 2.0),帮助按引擎设计方式写 GDScript,而不是堆经验口诀。

技能如何帮你写对脚本

核心工作流可以概括为几条可执行的约定:

  • 尽量写静态类型:如 var hp: int = 10、func add(a: int, b: int) -> int:,或用 := 做类型推断,便于解析期报错并减轻 VM 负担。
  • 生命周期各用其位:_ready() 做一次性初始化;_process(delta) 做每帧逻辑;移动与物理放在 _physics_process(delta)(例如 move_and_slide())。
  • 用 @onready 拿子节点引用,不要用 _init()——子节点尚未进场景树。
  • 用 @export 暴露可在 Inspector 里调的参数;事件优先 信号 + await,避免无意义的轮询。
  • 先跑 Debugger,从第一个报错改起,后续错误常常是连锁反应。

模式层面会覆盖:带类型与生命周期的脚本骨架、4.x 的 Callable 信号连接与 emit、await 替代 3.x 的 yield,以及 lambda、类型化数组与安全访问等写法。

适用边界与常见坑

  • 场景树、实例化、Autoload → 用 godot-nodes-scenes;信号架构与解耦 → godot-signals-groups;C# 而非 GDScript → godot-csharp。
  • 3.x → 4.x:export/onready/tool 等改为 @export、@onready、@tool;connect("x", self, "_on_x") 改为 x.connect(_on_x);yield(obj, "sig") 改为 await obj.sig。
  • 整数除法截断(5 / 2 == 2),需要浮点请用 5.0 / 2 或显式转换。
  • class_name 全项目唯一,否则无法在其他脚本或 Inspector 里当作类型使用。

使用场景

  • Godot 3.x 升到 4.x 后 `.gd` 无法解析,需要把 `yield`、旧式 `connect` 改成 `await` 与 Callable 写法。
  • 为新玩法节点写脚本:用静态类型声明变量与函数,在 `_ready`/`@onready` 里绑定子节点,避免 `_init` 里取 `$` 路径。
  • 角色移动在 `_process` 里帧率不稳,需要把 `move_and_slide()` 等逻辑迁到 `_physics_process` 并核对 `delta` 用法。
  • UI 或关卡流程要等计时器/自定义信号再继续,用 `await` 挂起协程,而不是每帧轮询布尔标志。

适合人员

  • 正在把 Godot 3 存量项目迁到 4.x 的独立开发者,需要按新注解与信号 API 逐文件修脚本。
  • 在 Godot 4 里写玩法逻辑的程序员,希望团队统一静态类型、生命周期与信号连接约定。
  • 与策划同场景协作的 gameplay 工程师,要用 `@export` 把速度、冷却等参数交给 Inspector 调。
  • 刚上手 Godot 4 GDScript 的作者,想对照 Debugger 报错理清整数除法、`class_name` 唯一性等常见坑。