Mr.Tang

Godot 4.6 C# Development

開發程式設計v1.0.0
作者:Mr.Tang更新於 2026-05-11godot-dev@clawhub_thb32133451/godot-dev
程式碼生成指令碼工具#Debugging#Game#开发

據 AlphaMoat 統計,截至 2026-09,Godot 4.6 C# Development 累計下載 2,615 次、獲 0 個星標,在全部 5,078 個 AI 技能中排名第 4,011 位,在「開發程式設計」分類(577 個)中排名第 502 位。

累計安裝
284
累計下載
2615
星標
-
全站排名
#4,011
全站前 79% · 「開發程式設計」前 88%
平台累計安裝累計下載星標評論
ClawHub ↗311228--
SkillHub ↗2842615-—

各平台的計數口徑不同,統計時間不一致。

這個技能是做什麼的

整理 Autoload 管理器、節點組織和訊號解耦模式,給出強型別、匯出資源、物件池及除錯分析範例。強調避免逐幀載入資源和在 _Process 中分配記憶體。適用於已有 Godot C# 專案的設計、除錯及 GDScript 遷移參考;具體 API 需結合專案版本核對。

資料釋出於 2026-10-26

可以用來做什麼

  • 梳理 Godot C# 專案的結構與效能問題

什麼時候用

  • 設計遊戲系統或排查 Godot 專案問題時

示例提示詞

以下是根據技能文件生成的示例,不代表實際執行結果。

檢查這個 Godot C# 系統的訊號設計和資源載入方式。

月度資料趨勢

累計下載2615
397158827792026-03 · 累計下載 5612026-05 · 累計下載 11022026-06 · 累計下載 12692026-07 · 累計下載 16152026-08 · 累計下載 18942026-09 · 累計下載 261526-0326-09
星標-
0112026-03 · 星標 -2026-05 · 星標 -2026-06 · 星標 -2026-07 · 星標 -2026-08 · 星標 -2026-09 · 星標 -26-0326-09

2026-09 起統計方法調整:同名技能按作者分別統計,並覆蓋全部技能。圖中虛線為調整前的月份,與之後的資料不直接比較,也不計算跨越調整的增長。

月份累計下載環比星標
2026-092615—-
2026-081894+17.3%-
2026-071615+27.3%-
2026-061269+15.2%-
2026-051102—-
2026-03561—-

SKILL.md 原文

以下是作者釋出的原始檔案,按純文字顯示,本站未做修改或稽核;其中的連結不可點選,命令請核實後再執行。抓取於 2026-10-23。

3.5 KB · ClawHub v1.0.0
---
name: godot-dev
description: Godot 4.x game development with C#/.NET, covering best practices, architecture patterns, performance optimization, and common pitfalls. Use when working on Godot projects, debugging Godot-specific issues, designing game architecture, or implementing game systems. Includes GDScript-to-C# migration guidance.
---

# Godot 4.x C# 开发指南

## 核心架构原则

### 1. Autoload 单例模式
展開全部(共 151 行)
使用 Autoload 创建全局管理器:
```
GameManager (游戏状态)
EventManager (事件总线)
AudioManager (音频管理)
SaveManager (存档管理)
LocalizationManager (本地化)
```

### 2. 节点组织结构
```
GameScene (Node2D)
├── Entities (Node2D)
│   ├── Player (CharacterBody2D)
│   └── Enemies (Node2D)
├── Environment (Node2D)
│   ├── TileMaps
│   └── Props
└── UI (CanvasLayer)
    └── HUD
```

### 3. 信号驱动架构
使用信号解耦:
```csharp
// 定义信号
[Signal]
public delegate void HealthChangedEventHandler(int current, int max);

// 触发信号
EmitSignal(SignalName.HealthChanged, currentHealth, maxHealth);

// 连接信号
player.HealthChanged += OnHealthChanged;
```

## C# 特定最佳实践

### 类型安全
```csharp
// ✅ 正确:使用强类型
private PlayerController _player;

// ❌ 避免:过度使用 var 导致类型不明确
var player = GetNode("Player"); // Node? PlayerController?
```

### 资源加载
```csharp
// ✅ 推荐:预加载资源
[Export]
public PackedScene EnemyScene { get; set; }

// ⚠️ 运行时加载
var scene = GD.Load<PackedScene>("res://scenes/enemy.tscn");

// ❌ 避免:每帧加载
func _process():
    var tex = load("res://sprite.png")  # 性能杀手
```

### Godot 4.6 API 变化
```csharp
// Godot 4.5 → 4.6 迁移

// PhysicsRayQuery2D 已弃用
// ❌ 旧版
var query = PhysicsRayQuery2D.Create(from, to);

// ✅ 新版
var query = new PhysicsRayQueryParameters2D
{
    From = from,
    To = to,
    CollisionMask = collisionMask
};
var result = space.IntersectRay(query);

// Dictionary 类型限制
// ❌ Godot.Collections.Dictionary 不支持复杂类型
Godot.Collections.Dictionary<string, EnemyData> dict;

// ✅ 使用 System.Collections.Generic
System.Collections.Generic.Dictionary<string, EnemyData> dict;
```

## 性能优化

### 对象池
```csharp
public class ObjectPool<T> where T : Node, new()
{
    private readonly Stack<T> _pool = new();
    private readonly PackedScene _scene;

    public T Get() => _pool.Count > 0 ? _pool.Pop() : _scene.Instantiate<T>();
    
    public void Return(T obj)
    {
        obj.GetParent()?.RemoveChild(obj);
        _pool.Push(obj);
    }
}
```

### 避免常见陷阱
1. **不要在 _Process 中分配内存**
2. **使用 [Export] 而非字符串路径**
3. **批量处理物理操作**
4. **关闭不需要的节点处理**: `ProcessMode = ProcessModeEnum.Disabled`

## 调试技巧

### 自定义调试输出
```csharp
public static class Debug
{
    [Conditional("DEBUG")]
    public static void Log(string message)
    {
        GD.Print($"[{Time.GetTimeStringFromSystem()}] {message}");
    }
}
```

### 性能分析
```
# 启用调试模式
godot --path . --debug-gd

# 使用内置分析器
Debugger > Profiler > Start
```

## 参考资源

- **Godot 4.6 API 文档**: [references/godot-46-api.md](references/godot-46-api.md)
- **C# 模式**: [references/csharp-patterns.md](references/csharp-patterns.md)
- **常见错误**: [references/common-errors.md](references/common-errors.md)
- **性能指南**: [references/performance.md](references/performance.md)

「開發程式設計」分類下的熱門技能

Github開發程式設計

使用 gh CLI 與 GitHub 互動,透過 gh issue、gh pr、gh run 和 gh api 管理議題、PR、CI 執行及高階查詢。

↓ 38.7萬★ 708Peter Steinberger
Multi Search Engine開發程式設計

Multi search engine integration with 16 engines (7 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and Wolfra...

↓ 16.2萬★ 763g_pyAng
Mcporter開發程式設計

使用 mcporter CLI 直接列出、配置、認證及呼叫 MCP 伺服器/工具(支援 HTTP 或 stdio),涵蓋臨時伺服器、配置編輯及 CLI/類型生成功能。

↓ 8萬★ 204Peter Steinberger
Mermaid Diagram開發程式設計

生成有效的 Mermaid 圖表,如流程圖、時序圖、思維導圖、ER 圖、使用者旅程等。

↓ 7.3萬★ 59pupujanet-eng
YouTube開發程式設計

透過託管 OAuth 整合 YouTube DataAPI,支援影片搜尋、播放列表管理、頻道資料訪問及評論互動。當用戶需要與 YouTube 互動時使用本技能。其他第三方應用請使用 api-gateway 技能(https://clawhub.ai/byungkyu/api-gateway)。

↓ 6.2萬★ 145byungkyu
GitHub開發程式設計

GitHub API integration with managed OAuth. Access repositories, issues, pull requests, commits, branches, and users. Use this skill when users want to interact with GitHub repositories, manage issues and PRs, search code, or automate workflows. For other third party apps, use the api-gateway skill (

↓ 3.8萬★ 53byungkyu
Code開發程式設計

覆蓋規劃、實現、驗證與測試的編碼工作流技能。

↓ 3.7萬★ 66Iván
Docker Essentials開發程式設計

核心 Docker 命令和工作流程,包括容器管理、映象操作和除錯。

↓ 3.7萬★ 42Arnarsson

資料月份:2026-09 · 下載/星標/安裝數聚合自公開技能註冊庫(ClawHub、SkillHub),按月更新。口徑說明見資料方法。