Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Godot 4.x 完整開發指南。涵蓋 GDScript 模式、文件格式(.gd/.tscn/.tres)、場景架構、物理/UI/音效、性能優化、多平台導出、測試。自動觸發於 Godot 相關開發。
Godot 4.x 完整開發指南。涵蓋 GDScript 模式、文件格式(.gd/.tscn/.tres)、場景架構、物理/UI/音效、性能優化、多平台導出、測試。自動觸發於 Godot 相關開發。
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Godot 4.x 遊戲開發完整指南,專為 AI 輔助開發設計。
.gd → GDScript 程式碼(完整語言) .tscn → 場景序列化(嚴格格式,非 GDScript) .tres → 資源序列化(嚴格格式,非 GDScript) ⚠️ AI PITFALL:混淆 GDScript 與資源格式 # ❌ WRONG in .tres/.tscn script = preload("res://script.gd") var items = [1, 2, 3] # ✅ CORRECT in .tres/.tscn [ext_resource type="Script" path="res://script.gd" id="1"] script = ExtResource("1") items = Array[int]([1, 2, 3])
# 變數類型 var health: int = 100 var speed: float = 200.0 var items: Array[Item] = [] var stats: Dictionary = {} # 函數簽名 func calculate_damage(base: int, multiplier: float) -> int: return int(base * multiplier)
組合優先於繼承 信號用於解耦通信 資源用於數據配置 自動載入用於全局系統
res:// ├── project.godot ├── scenes/ # .tscn 場景 │ ├── player/ │ ├── enemies/ │ └── ui/ ├── scripts/ # .gd 腳本 ├── assets/ # 資源文件 ├── autoload/ # 單例腳本 ├── resources/ # .tres 資源 └── test/ # 測試
2D3D用途CharacterBody2DCharacterBody3D玩家/NPC 移動RigidBody2DRigidBody3D物理模擬Area2DArea3D碰撞檢測(無物理)Sprite2DMeshInstance3D視覺渲染
@export var speed: float = 5.0 @export_range(0, 100, 1) var health: int = 100 @export_file("*.tscn") var next_level: String @export_group("Combat") @export var damage: int = 10
signal health_changed(current: int, maximum: int) signal died func take_damage(amount: int) -> void: health -= amount health_changed.emit(health, max_health) if health <= 0: died.emit()
@onready var sprite: Sprite2D = $Sprite2D @onready var anim: AnimationPlayer = $AnimationPlayer
陷阱錯誤寫法正確寫法.tres 使用 preloadpreload("res://x.gd")ExtResource("id").tres 使用 varvar x = 5x = 5未類型化陣列[1, 2, 3] in .tresArray[int]([1, 2, 3])缺少 ext_resource直接使用 id先宣告 ext_resource@onready 初始化在宣告時存取其他節點等到 _ready()直接修改資源resource.value = xresource.duplicate()輸入處理UI 和遊戲混用 _inputUI 用 _gui_input
主題路徑項目結構references/01-project-structure.mdGDScript 模式references/02-gdscript-patterns.md文件格式references/03-file-formats.md場景與節點references/04-scenes-nodes.mdUI 與輸入references/05-ui-input.md物理系統references/06-physics.md音效與動畫references/07-audio-animation.md性能優化references/08-performance.md導出平台references/09-export.md測試指南references/10-testing.md
# 運行遊戲 godot --path . # 驗證腳本 godot --path . --check-only --script path/to/script.gd # 無頭測試 godot --path . --headless --quit # 導出 godot --path . --export-release "Preset Name" builds/game.exe Version: 1.0.0 | Last Updated: 2026-02-17
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.