ワンクリックで
godot-organize-scripts
当 Godot 项目的脚本分散且没有清晰组织时使用。检测脚本并按类别 (角色、敌人、组件、管理器、工具类)整理。创建清晰的结构以展示 架构层级和关系。保留所有引用和 class_name 声明。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
当 Godot 项目的脚本分散且没有清晰组织时使用。检测脚本并按类别 (角色、敌人、组件、管理器、工具类)整理。创建清晰的结构以展示 架构层级和关系。保留所有引用和 class_name 声明。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
当 Godot 代码中存在通过 get_node()、get_parent() 或直接引用产生的紧耦合依赖时使用。 检测耦合模式并将其转换为基于 Signal 的通信方式。组件变得独立、可测试且可复用。 在改进架构的同时精确保留原有行为。
当 Godot 代码中存在相互冲突的操作导致未定义行为时使用。检测同一属性在多处设置 (_ready、_process、代码+编辑器)、同一 Signal 多次连接、冲突的物理模式、 竞争的动画等问题。自动通过明确的所有权归属解决冲突。
用于创建带有自定义面板、停靠栏和工具的 Godot 编辑器插件。生成 plugin.cfg 配置、 EditorPlugin 脚本模板、自定义编辑器 UI 组件,并集成 ProjectSettings。按照 Godot 4.x 最佳实践创建完整的插件结构。
当 Godot 代码中存在硬编码的游戏数据(如 const 数组、字典或内嵌值)时使用。检测内联数据 如敌人属性、物品定义、关卡配置等。自动提取为 .tres Resource 文件,使数据在编辑器中 可见、易于修改,并支持数据驱动的设计。
当构建 Godot 功能时,代码使用 .new() 创建节点而非使用场景时触发。 检测 Timer.new()、Area2D.new()、Sprite2D.new() 等代码创建的对象。 自动生成 .tscn 场景文件,更新父脚本使用 @onready 引用,并创建可复用的组件库。
当 Godot 项目在编辑器(.tscn)和代码(.gd)之间存在位置冲突、相机跟随背景、 或运行时位置与编辑器预览不匹配时使用。编排所有 3 个位置同步子技能: sync-static-positions、sync-camera-positions 和 sync-parallax。 每个操作针对特定的位置冲突类型。
| name | godot-organize-scripts |
| version | 3.0.0 |
| displayName | 整理脚本文件 |
| description | 当 Godot 项目的脚本分散且没有清晰组织时使用。检测脚本并按类别 (角色、敌人、组件、管理器、工具类)整理。创建清晰的结构以展示 架构层级和关系。保留所有引用和 class_name 声明。 |
| author | Asreonn |
| license | MIT |
| category | game-development |
| type | tool |
| difficulty | beginner |
| audience | ["developers"] |
| keywords | ["godot","script-organization","gdscript","file-structure","code-architecture","components","managers","best-practices"] |
| platforms | ["macos","linux","windows"] |
| repository | https://github.com/asreonn/godot-superpowers |
| homepage | https://github.com/asreonn/godot-superpowers#readme |
| permissions | {"filesystem":{"read":[".gd"],"write":["*"],"move":true,"delete":false},"git":true} |
| behavior | {"auto_rollback":true,"validation":true,"git_commits":true} |
| outputs | 整理后的脚本目录、移动的文件并保留引用、git 提交 |
| requirements | Git 仓库、Godot 4.x |
| execution | 全自动,保留引用 |
| integration | godot-organize-project 编排器的一部分,与 godot-split-scripts 协同工作 |
脚本按架构层级和职责整理。 代码结构揭示设计。
查找类似这样的脚本目录:
scripts/
├── player.gd
├── enemy.gd
├── health_component.gd
├── game_manager.gd
├── utility.gd
├── inventory.gd
├── ui_manager.gd
└── ...(50 多个脚本)
转换为:
scripts/
├── characters/
│ ├── player.gd
│ └── character_base.gd
├── enemies/
│ ├── enemy.gd
│ ├── goblin.gd
│ └── enemy_ai.gd
├── components/
│ ├── health_component.gd
│ ├── movement_component.gd
│ └── combat_component.gd
├── managers/
│ ├── game_manager.gd
│ ├── ui_manager.gd
│ └── audio_manager.gd
├── systems/
│ └── inventory.gd
└── utility/
├── math_helper.gd
└── constants.gd
识别:
脚本不断增多,组织已经丢失。
希望文件夹结构反映设计。
新开发者需要快速导航代码。
清晰的组织使重构更安全。
玩家和 NPC 的脚本。
characters/
├── player.gd
├── npc.gd
├── character_base.gd
└── character_state_machine.gd
敌人实体和 AI 的脚本。
enemies/
├── enemy_base.gd
├── goblin.gd
├── orc.gd
├── ai/
│ ├── enemy_ai.gd
│ ├── patrol_ai.gd
│ └── chase_ai.gd
└── behaviors/
├── attack_behavior.gd
└── flee_behavior.gd
可复用的组件脚本。
components/
├── health_component.gd
├── movement_component.gd
├── combat_component.gd
├── inventory_component.gd
└── hitbox_component.gd
单例模式的管理器脚本。
managers/
├── game_manager.gd
├── audio_manager.gd
├── scene_manager.gd
├── save_manager.gd
└── input_manager.gd
游戏系统(背包、任务、对话)。
systems/
├── inventory_system.gd
├── quest_system.gd
├── dialog_system.gd
└── crafting_system.gd
UI 相关脚本。
ui/
├── main_menu.gd
├── pause_menu.gd
├── hud.gd
├── inventory_ui.gd
└── widgets/
├── health_bar.gd
└── button_hover.gd
辅助和工具脚本。
utility/
├── constants.gd
├── math_helper.gd
├── vector_utils.gd
└── debug_draw.gd
自定义 Resource 类定义。
resources/
├── item_data.gd
├── enemy_stats.gd
├── ability_definition.gd
└── level_config.gd
检测关系:
保持内聚性:
# 之前
const EnemyScene = preload("res://enemy.gd")
# 之后
const EnemyScene = preload("res://scripts/enemies/enemy.gd")
# 之前
extends "res://character_base.gd"
# 之后
extends "res://scripts/characters/character_base.gd"
# 之前
[ext_resource path="res://player.gd" type="Script"]
# 之后
[ext_resource path="res://scripts/characters/player.gd" type="Script"]
协同工作:
不要在以下情况重新整理:
可选:在整理时重命名
PlayerController.gd → player_controller.gd(snake_case)EnemyAI.gd → enemy_ai.gdGodot 惯例偏好使用 snake_case 作为文件名。
典型层级结构:
组织方式反映依赖方向(工具类不依赖任何东西,实体依赖所有东西)。
| 之前 | 之后 |
|---|---|
scripts/ 中的 player.gd | scripts/characters/player.gd |
scripts/ 中的 enemy_ai.gd | scripts/enemies/ai/enemy_ai.gd |
混杂的 health_component.gd | scripts/components/health_component.gd |
根目录中的 game_manager.gd | scripts/managers/game_manager.gd |
分散的 utils.gd | scripts/utility/math_helper.gd |
可针对以下内容自定义:
默认值遵循 Godot 基于组件的架构模式。