Agent Skills
返回列表
💻

Godot C# 游戏开发

开发编程 更新于 2026.08.30

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

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-csharp-sh-aj4mtj。

技能介绍

要解决什么问题

在 Godot 里用 C# 写玩法逻辑时,引擎 API 和 GDScript 习惯并不一一对应:partial 类、PascalCase 生命周期、[Export]/[Signal] 委托命名,以及 GetNode 与 GDScript 互调,都容易在「能编译」和「引擎真的会调用」之间踩坑。本技能聚焦 Godot 4.3+ 的 .NET / C# 脚本层,而不是场景、物理、动画等语言无关主题。

技能如何组织工作流

  • 环境与工程:必须使用 Godot .NET 编辑器构建,并安装与版本匹配的 SDK(4.3/4.4 对应 .NET 6.0,4.5+ 对应 .NET 8);首个 C# 脚本会生成 .csproj/.sln,可在编辑器或 dotnet build 下编译。
  • 节点脚本形态:每个节点脚本是继承 Godot 类型的 partial class,文件名与类名应对齐节点脚本;生命周期重写为 _Ready()、_Process(double delta)、_PhysicsProcess(double delta)。
  • Inspector 与信号:用 [Export] 暴露可调参数;用 [Signal] 声明以 EventHandler 结尾的委托,通过 EmitSignal(SignalName.Xxx, ...) 发射,并订阅生成的 C# 事件。
  • 场景与互操作:用 GetNode("Path")(或 %Unique)取节点;需要时通过 Call/Get/Set 调用 GDScript;技能内还覆盖场景实例化、信号即 C# 事件等模式。

适用边界与注意点

  • 不要用本技能替代:纯 GDScript 语法 → godot-gdscript;与语言无关的引擎概念 → 对应 godot-* 技能。
  • 常见失败点:忘记 partial 会导致源生成器无法扩展类;生命周期方法名或 double delta 签名错误则回调不会被调用;Vector2 等 值类型 需整 struct 写回,不能直接改字段;日志用 GD.Print 而非依赖控制台;释放节点优先 QueueFree(),释放后访问会抛 ObjectDisposedException。
  • 导出与平台:部分平台(Web/移动端等)的 .NET 导出步骤与标准构建不同,需查阅目标平台的 .NET 导出说明;Android 4.5 等场景可能涉及更高版本 SDK 要求。

使用场景

  • Godot 4 .NET 工程里首次添加 `.cs` 节点脚本,需确认 partial 类名、`_Ready`/`_Process(double)` 能被引擎回调
  • Inspector 要把速度、冷却等参数做成可调项,用 `[Export]` 替代 GDScript 的 `@export` 并分组展示
  • 节点间用 `[Signal]` 与 `EmitSignal(SignalName.Xxx)` 发事件,并在其它 C# 脚本里订阅生成的事件而非手写字符串信号名
  • 场景里部分节点仍是 GDScript,C# 父节点要用 `GetNode` 定位子节点并通过 `Call`/`Get`/`Set` 调用对方方法或属性

适合人员

  • 从 Unity 迁到 Godot、希望继续用 C# 写节点生命周期与 Inspector 字段的 indie 玩法程序员
  • 团队锁定 Godot .NET 编辑器构建,负责把现有 GDScript 模块按文件改写成 `.cs` 并保留信号与导出语义的后端/客户端开发
  • 维护 Godot 4.3/4.4 项目时要对齐 .NET 6 SDK、`.csproj` 与源生成器报错(缺少 partial、`[Export]` 失效)的构建负责人
  • 在 C# 里动态 `Instantiate` PackedScene、挂到树并连接 `SignalName` 与事件 handler 的 gameplay 工程师