بنقرة واحدة
chinese-dev-guide
为中文开发者提供完整的项目本地化、环境配置和开发工作流指导,确保中英文双语环境下的最佳开发体验
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
为中文开发者提供完整的项目本地化、环境配置和开发工作流指导,确保中英文双语环境下的最佳开发体验
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Godot技能统一入口,根据用户需求智能选择并调用最适合的Godot子技能,提供15个专业技能的一站式开发体验
自动使用Context7进行文档研究,当用户需要代码生成、配置步骤或库/API文档时无需明确请求即可自动获取最新信息
GDScript 语法权威指南,提供最新 Godot 4.5 语法规范、最佳实践、缩进规则和代码风格
Godot 资源与动画创建专家,支持自然语言描述自动完成精灵导入、动画配置、特效制作、音效集成等资源工作
提供批量操作Godot节点的能力,支持批量更新属性、重命名、删除和创建节点,大幅提升开发效率
Godot 2D相机系统专家,专门处理多角色相机管理、视野控制、平滑跟随和动态视角系统
| name | chinese-dev-guide |
| description | 为中文开发者提供完整的项目本地化、环境配置和开发工作流指导,确保中英文双语环境下的最佳开发体验 |
| version | 1.0.0 |
| allowed-tools | Read, Write, Edit, Bash |
当用户是中文开发者或需要中文环境支持时,自动提供本地化配置和开发指导:
此技能主要使用以下MCP工具:
# 使用Bash MCP执行系统配置
await bashMCP.execute('export LANG=zh_CN.UTF-8');
# 使用Read/Write MCP编辑配置文件
await writeMCP.editFile('.vscode/settings.json', {
"files.encoding": "utf8",
"editor.fontFamily": "'Microsoft YaHei', monospace"
});
# 使用Context7 MCP查询中文开发资源
await context7MCP.search('中文开发环境配置最佳实践');
目标: 确保命令行环境正确支持中文显示和输入
执行步骤:
# 检查当前语言环境
locale
# 设置中文UTF-8环境 (Ubuntu/Debian)
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
# 添加到shell配置文件
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc
echo 'export LANGUAGE=zh_CN:zh:en_US:en' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
目标: 确保Git能够正确处理中文文件名和提交信息
执行步骤:
# 设置中文编码支持
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
git config --global core.quotepath false
# 创建中文提交模板
cat > ~/.gitmessage.txt << 'EOF'
# 中文提交信息模板
#
# 类型: feat(新功能), fix(修复), docs(文档), style(格式), refactor(重构), test(测试), chore(构建)
#
# 示例:
# feat(粒子系统): 添加彩色爆炸效果
# fix(兼容性): 修复Godot 4.x API兼容性问题
# docs(README): 更新中文安装说明
#
类型(影响范围): 简短描述
详细描述 (可选):
-
-
相关问题 (可选):
EOF
git config --global commit.template ~/.gitmessage.txt
目标: 配置VS Code完美支持中文开发
配置文件位置: .vscode/settings.json
{
"files.encoding": "utf8",
"files.autoGuessEncoding": true,
"editor.fontFamily": "'Microsoft YaHei', 'Source Code Pro', 'Consolas', monospace",
"editor.fontSize": 14,
"editor.lineHeight": 1.6,
"terminal.integrated.fontFamily": "'Microsoft YaHei', 'Consolas', monospace",
"terminal.integrated.fontSize": 13,
"git.enableSmartCommit": true,
"git.postCommitCommand": "none",
"git.showInlineOpenFileAction": false,
"[gdscript]": {
"editor.fontFamily": "'Microsoft YaHei', 'Consolas', monospace",
"editor.fontSize": 14
},
"explorer.confirmDelete": false,
"workbench.colorTheme": "Default Dark+",
"workbench.iconTheme": "material-icon-theme"
}
目标: 配置Godot编辑器支持中文界面和输入
配置步骤:
编辑器 -> 编辑器设置 -> 界面编辑器语言 为 Chinese (Simplified)字体 为支持中文的字体目标: 优化中文技术术语的英文查询效果
关键词映射表:
const chineseKeywordMappings = {
"粒子系统": ["Godot particle system", "GPUParticles2D", "ParticleProcessMaterial", "particle effects"],
"动画系统": ["Godot animation system", "AnimationPlayer", "tween", "animation blending"],
"物理引擎": ["Godot physics engine", "RigidBody2D", "CollisionShape2D", "physics materials"],
"场景管理": ["Godot scene management", "SceneTree", "node hierarchy", "scene switching"],
"信号系统": ["Godot signal system", "connect signals", "event handling", "signal parameters"],
"输入处理": ["Godot input handling", "InputEvent", "input mapping", "input actions"],
"UI界面": ["Godot UI system", "Control nodes", "interface design", "GUI layout"],
"资源管理": ["Godot resource management", "ResourceLoader", "preload", "resource paths"],
"性能优化": ["Godot performance optimization", "profiling", "optimization techniques"],
"调试工具": ["Godot debugging tools", "print statements", "debugger", "remote debugging"],
"脚本编程": ["Godot scripting", "GDScript", "script organization", "code patterns"],
"材质着色": ["Godot materials shaders", "ShaderLanguage", "visual shaders", "material properties"],
"音频系统": ["Godot audio system", "AudioStreamPlayer", "sound effects", "music management"],
"网络功能": ["Godot networking", "HTTP requests", "multiplayer", "WebSocket"],
"平台导出": ["Godot export templates", "platform export", "HTML5 export", "mobile builds"]
};
function enhanceChineseQuery(userQuery) {
let enhancedQuery = userQuery;
// 检测中文关键词并添加英文对应
for (const [chinese, englishList] of Object.entries(chineseKeywordMappings)) {
if (userQuery.includes(chinese)) {
// 添加主要英文术语
enhancedQuery += ` ${englishList[0]}`;
// 添加其他相关术语作为备选
enhancedQuery += ` OR ${englishList.slice(1).join(' OR ')}`;
break;
}
}
return enhancedQuery;
}
目标: 创建符合中文习惯的项目目录结构
执行步骤:
# 创建中文友好的项目结构
mkdir -p "我的Godot项目"/{场景,脚本,资源,文档,测试,配置}
# 创建中文README
cat > "我的Godot项目/README.md" << 'EOF'
# 我的项目名称
## 项目简介
这是一个使用Godot引擎开发的游戏项目,支持中英文双语环境。
## 功能特性
- 🎮 完整的游戏玩法机制
- 🎨 精美的视觉效果和动画
- 🎵 动态音效和背景音乐
- 🌐 多语言支持 (中文/英文)
- 📱 跨平台兼容 (PC/移动端/网页)
## 技术栈
- **游戏引擎**: Godot 4.2+
- **脚本语言**: GDScript
- **开发工具**: Claude Code + MCP工具链
- **版本控制**: Git
- **自动化**: Context7文档研究
## 开发环境要求
- Godot编辑器 4.2+
- Node.js 18+ (MCP服务器)
- Git 2.30+
- 支持UTF-8的终端和编辑器
## 快速开始
1. 克隆项目到本地
2. 在Godot编辑器中打开 `project.godot`
3. 启动MCP服务器: `npm run dev`
4. 开始游戏开发!
## 项目结构
我的Godot项目/ ├── 场景/ # .tscn场景文件 ├── 脚本/ # .gd脚本文件 ├── 资源/ # 图片、音频、字体等资源 ├── 文档/ # 设计文档、API文档 ├── 测试/ # 单元测试、集成测试 └── 配置/ # 项目配置、导出设置
## 贡献指南
欢迎提交Issue和Pull Request!
## 许可证
MIT License
EOF
目标: 建立清晰一致的中文注释标准
注释规范示例:
# 玩家角色类 - 处理玩家的移动、动画和交互逻辑
class_name 玩家角色
extends CharacterBody2D
# === 常量定义 ===
const 移动速度: float = 300.0 # 水平移动速度 (像素/秒)
const 跳跃速度: float = -400.0 # 跳跃初始速度 (像素/秒)
const 重力加速度: float = 980.0 # 重力加速度 (像素/秒²)
# === 组件引用 ===
@onready var 动画播放器: AnimationPlayer = $AnimationPlayer
@onready var 精子: Sprite2D = $Sprite2D
@onready var 碰撞形状: CollisionShape2D = $CollisionShape2D
# === 状态变量 ===
var 正在跳跃: bool = false # 当前是否处于跳跃状态
var 面向右侧: bool = true # 当前角色朝向 (true=右侧, false=左侧)
var 当前生命值: int = 100 # 当前生命值
var 无敌时间: float = 0.0 # 剩余无敌时间 (秒)
# === 核心方法 ===
func _ready() -> void:
"""初始化玩家角色"""
print("玩家角色初始化完成")
重置玩家状态()
func _physics_process(delta: float) -> void:
"""每帧物理处理 - 处理移动和跳跃逻辑
Args:
delta: 距离上一帧的时间间隔 (秒)
"""
# 获取水平输入方向
var 水平方向: float = Input.get_axis("ui_left", "ui_right")
velocity.x = 水平方向 * 移动速度
# 处理跳跃输入
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
开始跳跃()
# 应用重力
if not is_on_floor():
velocity.y += 重力加速度 * delta
# 执行移动
move_and_slide()
# 更新动画状态
更新动画状态(水平方向)
# === 辅助方法 ===
func 开始跳跃() -> void:
"""执行跳跃动作"""
velocity.y = 跳跃速度
正在跳跃 = true
播放跳跃动画()
print("玩家跳跃!")
func 播放跳跃动画() -> void:
"""播放跳跃动画并等待完成"""
动画播放器.play("跳跃")
await 动画播放器.animation_finished
正在跳跃 = false
func 更新动画状态(移动方向: float) -> void:
"""根据移动状态更新角色动画
Args:
移动方向: 水平移动方向 (-1.0 到 1.0)
"""
if abs(移动方向) > 0.1:
# 移动状态
动画播放器.play("奔跑")
# 处理角色朝向翻转
if 移动方向 > 0 and not 面向右侧:
翻转角色(true)
elif 移动方向 < 0 and 面向右侧:
翻转角色(false)
else:
# 静止状态
动画播放器.play("待机")
func 翻转角色(面向右: bool) -> void:
"""翻转角色朝向
Args:
面向右: 是否面向右侧
"""
面向右侧 = 面向右
精子.flip_h = not 面向右
func 重置玩家状态() -> void:
"""重置玩家到初始状态"""
velocity = Vector2.ZERO
正在跳跃 = false
面向右侧 = true
当前生命值 = 100
无敌时间 = 0.0
动画播放器.play("待机")
print("玩家状态已重置")
# === 信号处理 ===
func _on_伤害区域_body_entered(body: Node2D) -> void:
"""当敌人进入伤害区域时触发
Args:
body: 进入区域的碰撞体
"""
if body.is_in_group("敌人") and 无敌时间 <= 0:
处理伤害碰撞(body)
func 处理伤害碰撞(敌人: Node2D) -> void:
"""处理与敌人的碰撞伤害
Args:
敌人: 造成伤害的敌人节点
"""
当前生命值 -= 10
无敌时间 = 1.0 # 1秒无敌时间
# 播放受伤动画
动画播放器.play("受伤")
# 计算击退方向和力度
var 击退方向 = (global_position - 敌人.global_position).normalized()
velocity = 击退方向 * 200.0
print("玩家受到伤害! 剩余生命值:", 当前生命值)
if 当前生命值 <= 0:
玩家死亡()
# 中文测试工具类 - 提供中文友好的测试功能
class_name 中文测试工具
extends RefCounted
static func 运行所有测试() -> void:
"""运行项目的所有单元测试"""
print("🚀 开始运行测试套件...")
print("=" * 50)
var 测试结果列表: Array[Dictionary] = []
var 开始时间 = Time.get_ticks_msec()
# 执行各项测试
测试结果列表.append(测试玩家移动功能())
测试结果列表.append(测试跳跃机制())
测试结果列表.append(测试动画系统())
测试结果列表.append(测试生命值系统())
var 结束时间 = Time.get_ticks_msec()
var 总耗时 = (结束时间 - 开始时间) / 1000.0
# 输出测试结果摘要
输出测试结果摘要(测试结果列表, 总耗时)
static func 测试玩家移动功能() -> Dictionary:
"""测试玩家移动功能"""
print("📝 测试玩家移动功能...")
try:
var 玩家 = 玩家角色.new()
# 测试初始化状态
assert(玩家.移动速度 == 300.0, "移动速度初始化错误")
assert(玩家.面向右侧 == true, "初始朝向错误")
assert(玩家.velocity == Vector2.ZERO, "初始速度应为零")
# 测试右移
玩家.velocity.x = 玩家.移动速度
玩家.move_and_slide()
assert(玩家.velocity.x > 0, "向右移动失败")
# 测试左移
玩家.velocity.x = -玩家.移动速度
玩家.move_and_slide()
assert(玩家.velocity.x < 0, "向左移动失败")
print("✅ 玩家移动功能测试通过")
return {"名称": "玩家移动功能", "状态": "通过", "耗时": 0.05}
except:
print("❌ 玩家移动功能测试失败")
return {"名称": "玩家移动功能", "状态": "失败", "错误": "移动逻辑异常"}
static func 输出测试结果摘要(结果列表: Array[Dictionary], 总耗时: float) -> void:
"""输出格式化的测试结果摘要
Args:
结果列表: 所有测试的结果数组
总耗时: 测试总耗时 (秒)
"""
var 通过数量 = 0
var 失败数量 = 0
print("\n" + "=" * 50)
print("📊 测试结果摘要")
print("=" * 50)
# 详细结果
for 结果 in 结果列表:
var 状态图标 = "✅" if 结果.状态 == "通过" else "❌"
print(f"{状态图标} {结果.名称}")
if 结果.状态 == "失败":
print(f" 错误: {结果.get('错误', '未知错误')}")
if 结果.has("耗时"):
print(f" 耗时: {结果.耗时:.2f}秒")
if 结果.状态 == "通过":
通过数量 += 1
else:
失败数量 += 1
# 统计信息
print("\n📈 统计信息:")
print(f" 总测试数: {通过数量 + 失败数量}")
print(f" 通过数量: {通过数量}")
print(f" 失败数量: {失败数量}")
print(f" 成功率: {(通过数量 / (通过数量 + 失败数量) * 100):.1f}%")
print(f" 总耗时: {总耗时:.2f}秒")
# 总结
if 失败数量 == 0:
print("\n🎉 恭喜! 所有测试都通过了!")
else:
print(f"\n⚠️ 警告: 有 {失败数量} 个测试失败,请检查相关代码")
# UTF-8编码验证工具
func 验证文件UTF8编码(文件路径: String) -> bool:
"""验证文件是否使用有效的UTF-8编码
Args:
文件路径: 要验证的文件路径
Returns:
bool: true表示编码有效,false表示编码有问题
"""
var 文件 = FileAccess.open(文件路径, FileAccess.READ)
if 文件 == null:
push_error(f"无法打开文件: {文件路径}")
return false
var 内容 = 文件.get_as_text()
文件.close()
var 有效长度 = 内容.validate_utf8()
if 有效长度 < 内容.length():
push_warning(f"文件 {文件路径} 包含无效的UTF-8字符")
return false
return true
func 修复文件编码(文件路径: String) -> bool:
"""尝试修复文件的编码问题
Args:
文件路径: 需要修复的文件路径
Returns:
bool: true表示修复成功
"""
if not 验证文件UTF8编码(文件路径):
push_error(f"文件 {文件路径} 存在编码问题,需要手动修复")
return false
print(f"文件 {文件路径} 编码正常")
return true
# 中文输入法支持配置
func 配置中文输入映射() -> void:
"""设置中文游戏操作的按键映射"""
# 移动控制
InputMap.add_action("移动前")
InputMap.add_action("移动后")
InputMap.add_action("移动左")
InputMap.add_action("移动右")
# 添加键盘事件
var 移动前事件 = InputEventKey.new()
移动前事件.keycode = KEY_W
InputMap.action_add_event("移动前", 移动前事件)
var 移动后事件 = InputEventKey.new()
移动后事件.keycode = KEY_S
InputMap.action_add_event("移动后", 移动后事件)
var 移动左事件 = InputEventKey.new()
移动左事件.keycode = KEY_A
InputMap.action_add_event("移动左", 移动左事件)
var 移动右事件 = InputEventKey.new()
移动右事件.keycode = KEY_D
InputMap.action_add_event("移动右", 移动右事件)
# 动作控制
InputMap.add_action("跳跃")
var 跳跃事件 = InputEventKey.new()
跳跃事件.keycode = KEY_SPACE
InputMap.action_add_event("跳跃", 跳跃事件)
print("中文按键映射配置完成")