SuperAPI AI 工具集

godot-autoload-architecture

编程与开发

查看项目

更新于 10-15 21:04

技能介绍

用途:为 Godot 项目设计 AutoLoad(单例)架构,管理全局状态、场景切换、信号通信与依赖注入,避免单例变成难以调试的“上帝对象”。

主要能力与脚本:autoload_init_order_diag.gd 验证多 AutoLoad 依赖图的启动顺序;singleton_dependency_diagram.gd 映射启动期调用关系;global_event_bus.gd 提供跨系统事件总线;safe_scene_switcher.gd 处理延迟释放与根节点归属的场景切换;service_locator.gd / service_registry.gd 用于非 Node 服务的 Engine.register_singleton 依赖注入;persistent_data_holder.gd 保存跨 change_scene_to_file() 的数据;static_state_manager.gd 用 static var 管理无需 SceneTree Node 的全局状态;lazy_loaded_singleton.gd 按需实例化;cross_autoload_comms.gd 处理单例就绪后的安全调用;thread_safe_global_access.gd 用 Mutex / call_deferred 处理后台线程;autoload_reference_checker.gd / singleton_health_check_test.gd 用于调试与 CI 校验注册和默认值;autoload_bootstrapper.gd / autoload_initializer.gd 提供有序初始化;debug_console_autoload.gd 使用 PROCESS_MODE_ALWAYS 的 CanvasLayer 控制台。

使用方式:AutoLoad 在 Project Settings 中自上而下初始化,上层单例不得在 _ready() 中调用下层;依赖方应下移。跨场景通信优先用信号,而非 Parent.method()。非 Node 服务用 Engine.register_singleton 注册,并在 _exit_tree 注销。

限制与禁止:不得在 _init() 访问 AutoLoad;不得在 _ready() 修改单例尺寸或子节点;不得存放高度局部化的场景数据;不得手动释放 AutoLoad 节点;不得创建循环依赖,否则启动画面会挂起;不得假设 _ready() 中 get_tree().current_scene 准确,可用 get_tree().root.get_child(-1);暂停时需运行的全局控制台或音乐管理器应设 process_mode = PROCESS_MODE_ALWAYS。适用场景:游戏/音频/存档管理器、场景切换器、全局分数与库存、跨场景事件总线;避免用于场景专属逻辑、临时状态、纯数据容器或过度架构的小项目。