Godot 4.x 开发指南
知识索引
核心规范
基础概念
GDScript
- 类型提示 | @export | @onready
- 枚举常量 | 协程
游戏开发
- 2D: 精灵动画 | 角色控制 | TileMap
- 3D: 角色控制 | 刚体 | 相机
- UI: Control节点 | 容器 | 主题
设计模式
测试 (GDUnit4)
- GDUnit4 基础 | 测试结构 | TDD 工作流
- 断言方法 | Mock/Stub
- 异步测试 | 场景测试
MCP 工具集成
场景与项目操作
- godot-mcp:
create_scene, add_node, save_scene, run_project, stop_project, get_debug_output
代码质量检查
- godot-ultimate:
lint_file, lint_project, validate_code, auto_fix, format_file
项目分析
- godot-ultimate:
project_health, detect_dead_code, analyze_signal_flow, complexity_heatmap, validate_scenes, analyze_dependencies
测试
- godot-ultimate:
run_tests, run_test_file, generate_test, get_test_coverage
详细用法:
| 工具 |
说明 |
使用场景 |
godot_generate_test |
为源文件生成测试桩 |
TDD RED 阶段 |
godot_run_test_file |
运行指定测试文件 |
开发中快速验证 |
godot_run_tests |
运行项目所有测试 |
提交前验收 |
godot_get_test_coverage |
获取测试覆盖率报告 |
质量检查 |
文档查询
- godot-ultimate:
get_api_docs, search_docs, get_game_patterns, get_performance_guide
代码生成
- godot-ultimate:
generate_from_template, generate_feature, smart_complete
Shader 开发
- godot-ultimate:
analyze_shader, lint_shader, lint_all_shaders, shader_performance, get_shader_docs
自动触发规则
代码编写后
- 新建/修改
.gd 文件 → godot_lint_file 检查代码质量
- 新建/修改
.gdshader → godot_lint_shader 检查着色器
代码审查时
- 分析依赖 →
godot_analyze_dependencies
- 检查信号流 →
godot_analyze_signal_flow
测试时
- 运行测试 →
godot_run_tests
- 生成测试 →
godot_generate_test
TDD 开发时
当使用 TDD 工作流程开发新功能时:
- RED:
godot_generate_test 生成测试桩 → 编写测试 → godot_run_test_file 确认失败
- GREEN: 编写代码 →
godot_run_test_file 确认通过 → godot_lint_file 检查质量
- REFACTOR: 重构代码 →
godot_run_test_file 确保不破坏
- 验收:
godot_run_tests 运行全部测试 → godot_get_test_coverage 检查覆盖率
调试时
- 运行项目 →
godot-mcp:run_project
- 获取输出 →
godot-mcp:get_debug_output
查询文档时
- API 问题 →
godot_get_api_docs
- 模式问题 →
godot_get_game_patterns
开发工作流程
TDD 工作流(推荐)
┌─────────┐ 失败 ┌─────────┐ 通过 ┌──────────┐
│ RED │ ────────→ │ GREEN │ ────────→ │ REFACTOR │
│ 写测试 │ │ 写代码 │ │ 重构 │
└─────────┘ └─────────┘ └────┬─────┘
↑ │
└───────────────── 下一功能 ←───────────────┘
- RED: 使用
generate_test 生成测试桩,编写失败的测试
- GREEN: 编写最小代码使测试通过,使用
lint_file 检查
- REFACTOR: 改进代码,确保测试仍通过
- 验收:
run_tests 全部测试 + get_test_coverage 覆盖率 > 80%
传统功能开发
- 使用
generate_from_template 生成基础代码
- 编写代码后使用
lint_file 检查
- 使用
generate_test 生成测试
- 使用
run_tests 验证
项目维护
- 使用
project_health 检查健康度
- 使用
detect_dead_code 清理死代码
- 使用
validate_scenes 验证场景引用
代码模板
游戏代码模板
测试模板
快速参考
# 节点引用
@onready var sprite: Sprite2D = $Sprite2D
# 导出变量
@export var speed: float = 200.0
@export_range(0, 100) var health: int = 100
# 信号
signal health_changed(new_value: int)
# 状态机枚举
enum State { IDLE, RUN, JUMP, FALL }
var current_state: State = State.IDLE
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: godot-4x-dev3description: Godot 4.x game development patterns and best practices. Activates for GDScript (.gd), scenes (.tscn), resources (.tres). Use when this capability is needed.4---56# Godot 4.x 开发指南78## 知识索引910### 核心规范11- [项目结构](rules/00-core/project-structure.md) | [命名规范](rules/00-core/naming-conventions.md) | [GDScript风格](rules/00-core/gdscript-style.md)1213### 基础概念14- [节点与场景](rules/01-fundamentals/nodes-and-scenes.md) | [信号系统](rules/01-fundamentals/signals.md)15- [资源管理](rules/01-fundamentals/resources.md) | [全局单例](rules/01-fundamentals/autoloads.md)1617### GDScript18- [类型提示](rules/02-scripting/type-hints.md) | [@export](rules/02-scripting/export-vars.md) | [@onready](rules/02-scripting/onready-pattern.md)19- [枚举常量](rules/02-scripting/enums-constants.md) | [协程](rules/02-scripting/coroutines-async.md)2021### 游戏开发22- **2D**: [精灵动画](rules/03-2d/sprite-animation.md) | [角色控制](rules/03-2d/characterbody2d.md) | [TileMap](rules/03-2d/tilemap.md)23- **3D**: [角色控制](rules/04-3d/characterbody3d.md) | [刚体](rules/04-3d/rigidbody3d.md) | [相机](rules/04-3d/camera3d.md)24- **UI**: [Control节点](rules/05-ui/control-nodes.md) | [容器](rules/05-ui/containers.md) | [主题](rules/05-ui/themes.md)2526### 设计模式27- [状态机](rules/09-patterns/state-machine.md) | [对象池](rules/09-patterns/object-pooling.md) | [组件系统](rules/09-patterns/component-system.md)2829### 测试 (GDUnit4)30- [GDUnit4 基础](rules/11-testing/gdunit4-basics.md) | [测试结构](rules/11-testing/test-structure.md) | [TDD 工作流](rules/11-testing/tdd-workflow.md)31- [断言方法](rules/11-testing/assertions.md) | [Mock/Stub](rules/11-testing/mocking-stubbing.md)32- [异步测试](rules/11-testing/async-testing.md) | [场景测试](rules/11-testing/scene-testing.md)3334## MCP 工具集成3536### 场景与项目操作37- **godot-mcp**: `create_scene`, `add_node`, `save_scene`, `run_project`, `stop_project`, `get_debug_output`3839### 代码质量检查40- **godot-ultimate**: `lint_file`, `lint_project`, `validate_code`, `auto_fix`, `format_file`4142### 项目分析43- **godot-ultimate**: `project_health`, `detect_dead_code`, `analyze_signal_flow`, `complexity_heatmap`, `validate_scenes`, `analyze_dependencies`4445### 测试46- **godot-ultimate**: `run_tests`, `run_test_file`, `generate_test`, `get_test_coverage`4748详细用法:49| 工具 | 说明 | 使用场景 |50|------|------|----------|51| `godot_generate_test` | 为源文件生成测试桩 | TDD RED 阶段 |52| `godot_run_test_file` | 运行指定测试文件 | 开发中快速验证 |53| `godot_run_tests` | 运行项目所有测试 | 提交前验收 |54| `godot_get_test_coverage` | 获取测试覆盖率报告 | 质量检查 |5556### 文档查询57- **godot-ultimate**: `get_api_docs`, `search_docs`, `get_game_patterns`, `get_performance_guide`5859### 代码生成60- **godot-ultimate**: `generate_from_template`, `generate_feature`, `smart_complete`6162### Shader 开发63- **godot-ultimate**: `analyze_shader`, `lint_shader`, `lint_all_shaders`, `shader_performance`, `get_shader_docs`6465---6667## 自动触发规则6869### 代码编写后70- 新建/修改 `.gd` 文件 → `godot_lint_file` 检查代码质量71- 新建/修改 `.gdshader` → `godot_lint_shader` 检查着色器7273### 代码审查时74- 分析依赖 → `godot_analyze_dependencies`75- 检查信号流 → `godot_analyze_signal_flow`7677### 测试时78- 运行测试 → `godot_run_tests`79- 生成测试 → `godot_generate_test`8081### TDD 开发时82当使用 TDD 工作流程开发新功能时:831. **RED**: `godot_generate_test` 生成测试桩 → 编写测试 → `godot_run_test_file` 确认失败842. **GREEN**: 编写代码 → `godot_run_test_file` 确认通过 → `godot_lint_file` 检查质量853. **REFACTOR**: 重构代码 → `godot_run_test_file` 确保不破坏864. **验收**: `godot_run_tests` 运行全部测试 → `godot_get_test_coverage` 检查覆盖率8788### 调试时89- 运行项目 → `godot-mcp:run_project`90- 获取输出 → `godot-mcp:get_debug_output`9192### 查询文档时93- API 问题 → `godot_get_api_docs`94- 模式问题 → `godot_get_game_patterns`9596---9798## 开发工作流程99100### TDD 工作流(推荐)101102```103┌─────────┐ 失败 ┌─────────┐ 通过 ┌──────────┐104│ RED │ ────────→ │ GREEN │ ────────→ │ REFACTOR │105│ 写测试 │ │ 写代码 │ │ 重构 │106└─────────┘ └─────────┘ └────┬─────┘107 ↑ │108 └───────────────── 下一功能 ←───────────────┘109```1101111. **RED**: 使用 `generate_test` 生成测试桩,编写失败的测试1122. **GREEN**: 编写最小代码使测试通过,使用 `lint_file` 检查1133. **REFACTOR**: 改进代码,确保测试仍通过1144. **验收**: `run_tests` 全部测试 + `get_test_coverage` 覆盖率 > 80%115116### 传统功能开发1171. 使用 `generate_from_template` 生成基础代码1182. 编写代码后使用 `lint_file` 检查1193. 使用 `generate_test` 生成测试1204. 使用 `run_tests` 验证121122### 项目维护1231. 使用 `project_health` 检查健康度1242. 使用 `detect_dead_code` 清理死代码1253. 使用 `validate_scenes` 验证场景引用126127## 代码模板128129### 游戏代码模板130- [2D角色控制器](assets/templates/character_controller_2d.gd)131- [状态机](assets/templates/state_machine.gd)132- [单例模板](assets/templates/singleton_template.gd)133134### 测试模板135- [通用测试模板](assets/templates/test_template.gd)136- [场景测试模板](assets/templates/test_scene_template.gd)137- [状态机测试模板](assets/templates/test_state_machine_template.gd)138139## 快速参考140141```gdscript142# 节点引用143@onready var sprite: Sprite2D = $Sprite2D144145# 导出变量146@export var speed: float = 200.0147@export_range(0, 100) var health: int = 100148149# 信号150signal health_changed(new_value: int)151152# 状态机枚举153enum State { IDLE, RUN, JUMP, FALL }154var current_state: State = State.IDLE155```156157---158> Converted and distributed by [TomeVault](https://tomevault.io/claim/sweetylht) — claim your Tome and manage your conversions.159<!-- tomevault:4.0:skill_md:2026-04-11 -->