用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/kakuun333/CspDiscordRpcGd --skill godot-cpp-guide命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | godot-cpp-guide |
| description | 編寫 Godot C++(godot-cpp)程式碼時的規範,確保結構清楚、易維護並符合最佳實踐。 |
godot-cppLFUTF-8檢查編譯錯誤時使用:
cmake --build cmake-build-codex --config Debug -j 26
必要時重新建置:
rm -rf cmake-build-codex
cmake -S . -B cmake-build-codex
cmake --build cmake-build-codex --config Debug -j 26
.h 中的類別方法與成員排列規則:
static → public → protected → privatepublic → protected → private.h 定義,其餘應在 .cpp 實作初始化:
godot::Ref<T> 明確初始化為 nullptr覆寫:
override 時,不要省略 virtual屬性:
[[nodiscard]],強調返回值的重要性[[maybe_unused]],避免未使用變數警告關鍵字:
_FORCE_INLINE__ALWAYS_INLINE_MyClassMyStructMyMethodMyMemberMY_ENUMERATORb + PascalCase → bIsActiveE + PascalCase → EMyEnumHttp、Ui、Npc、Xp、UserId避免重複宣告中的返回型別,改用大括號初始化
能使用 range-based for loop 時就使用
Pointer 和 Reference 應放在型別後方,且不留空格:
godot::Button* SomeFunc(const godot::String& SomeText);
callable_mp 巨集代替 godot::Callable:godot::Callable(this, "some_method") // 不推薦
callable_mp(this, &MyClass::SomeMethod) // 推薦
如果 enum 要綁定到 Godot,例如用於 VARIANT_ENUM_CAST、BIND_ENUM_CONSTANT、godot::ClassDB::bind_method,使用 enum EMyEnum
其他情況一律使用 enum class EMyEnum
根據列舉值數量繼承 uint8_t 或 uint16_t
成員變數使用統一初始化:
class MyClass
{
private:
bool bMyBoolean{ false };
};
godot::String 無法透過 operator+ 連接 const char*:godot::String("MyString") + "C-StyleString" // 錯誤
callable_mp() 代替 call_deferred():callable_mp(this, &MyClass::MyFunc).call_deferred(); // 推薦
call_deferred("my_func"); // 不推薦
Resource 使用 godot::Ref<T>newusing namespace godot;godot:: 前綴明確指定命名空間godot::ClassDB::bind_method 綁定方法godot::D_METHOD 的方法名稱與參數名稱使用 snake_casegodot::ClassDB::bind_method(godot::D_METHOD("some_method", "some_param"), &MyClass::SomeMethod);
ADD_PROPERTY 的第 2 和第 3 個參數使用 snake_caseADD_PROPERTY(godot::PropertyInfo(godot::Variant::STRING_NAME, "Name", godot::PROPERTY_HINT_NONE, "", godot::PROPERTY_USAGE_DEFAULT), "set_name", "get_name");
PropertyInfo 的第 2 個參數使用 PascalCasegodot::PropertyInfo(godot::Variant::STRING_NAME, "Name", godot::PROPERTY_HINT_NONE, "", godot::PROPERTY_USAGE_DEFAULT)
所有繼承 Godot 類別的類別都必須使用以下格式:
class MyClass : public godot::GodotClass
{
GDCLASS(MyClass, GodotClass)
protected:
static void _bind_methods();
}