跳转至

依赖诊断

GFArchitecture.get_dependency_diagnostics() 可读取已注册模块的可选依赖声明,并生成统一报告。它适合大型项目、局部 GFNodeContext 或插件式装配在初始化前后检查“模块声明需要什么、当前架构是否已经注册”。

诊断只读,不会自动注册缺失模块,也不会改变 get_model()get_system()get_utility() 和工厂创建的现有语义。

依赖声明

模块可按需实现这些 hook:

func get_required_models() -> Array[Script]:
    return [PlayerModel]

func get_required_utilities() -> Array[Script]:
    return [InventoryConfigUtility]

func get_required_dependencies() -> Dictionary:
    return {
        "systems": [BattleSystem],
        "factories": [DealDamageCommand],
    }

诊断调用

var report := architecture.get_dependency_diagnostics({
    "include_parent_lookup": true,
    "include_factories": true,
})
if not report["ok"]:
    for issue in report["issues"]:
        push_warning(issue["message"])

使用边界

依赖声明应保持抽象和稳定,优先声明模块真正需要的接口脚本、基类或别名类型;不要把具体关卡、敌人、UI 页面或临时玩法条件写进通用模块 hook。

需要按玩家进度、DLC、服务器配置或场景状态动态判断的内容,应留在项目自己的装配流程或诊断命令里。