前言: 本文是Godot(4.x)版本实现的,基于 Python 与 Godot 实现的 GodotAutoLoad模块 动态注入实现解释,将会解释Godot 动态依赖表(使用Excel)注入游戏中管理器(网络AutoLoad, 登录AutoLoad等) 的具体实现与演示,同时开源供任意使用。
这里先给出实现本依赖注入框架的程序环境
Godot版本: Godot_v4.6.2-stable
Python版本: Python 3.13.13,
Python额外依赖库: Openpyxl
其它实现中注入的演示模块将会在文章具体阐述的时候提供
1. Godot 动态驱动表注入概述
1. 综合讨论与概述
以往我实现的架构多是 手动添加AutoLoad管理器 ,管理器模块与游戏本身有一定的耦合度。即使可以通过手动复制到其他游戏项目中并微调实现跨项目使用,但是还是不太方便。这里我使用 Excel依赖注入 来尝试解除游戏管理器本身与游戏本体剩余的耦合性 ,实现模块的任意替换。
在本框架中,依赖注入是 启动游戏时读取表格中存入的模块地址,解析每个模块额外的启动参数然后加载到Godot中对应的,已经创建的AutoLoad接口中实现模块的注入。 这样子我们就可以通过Excel表格控制游戏中具体的模块是谁 ,是否启用 或者是否带入其他依赖等,这样就方便了我们调试与后期模块的替换。
2. 具体实现流程概述
1. Godot启动游戏,切换场景至黑屏,启动注入,将启动参数发送给Python并等待。
2. Python执行Excel对应地址等参数转换,打包成Json固定格式放入Godot指定文件夹。
3. Godot接收到Python处理完成信号,将Json文件格式化成多种字典形式
4. Godot使用格式化完成后得到的字典,检查对应模块和参数,并开始注入至对应AutoLoad的静态数据中完成注入
5. Godot注入模块将游戏切换至主场景,开始游戏。
以上为实现流程的实现总览,演示中所有代码都将会完整解释,包括用于热重载,优化等但未使用的代码的预留代码。由于代码和演示解释较长,将会拆分文章解释,本篇文章将会重在演示功能,实现代码将会留于子文章
3. 项目结构图以及流程图概览
1. 项目流程图
Godot启动 → 进入黑屏场景 → 调用Python并等待执行
↓
Python读取Excel配置表 → 数据转换 → 生成标准JSON文件
↓
Godot检测文件生成完成 → 读取JSON并解析为字典
↓
校验模块路径与启动参数 → 注入至AutoLoad接口静态数据
↓
注入完成 → 切换至游戏主场景 → 正式运行游戏
2. 项目结构图
Python 部分: 结构图
Python文件结构:
PYTHON_CONFIGURATION_TABLE_CODE/
├── Injection_Table/
└── InjectionTable.xlsx # 注入配置表(Excel)
├── spreadsheet_processing/
├── pycache/ # Python 编译缓存目录
├── debug_tool
├── pycache/ # Python 编译缓存目录
└── debug_util.py # 调试日志工具(控制 print 输出)
├── excel_format_convert.py # Excel 数据格式转换模块
├── excel_processing.py # Excel 读取与解析模块
└── json_processing.py # JSON 生成与处理模块
├── FileProcessingMain.py # 主入口脚本(供Godot调用)
└── InjectionConvert.json # 输出的 JSON 注入文件
Python文件结构图:

Godot 部分: 结构图
1. 文件结构(主要结构):
res://
├── 00_Engine/ # 引擎核心层(注入框架与业务模块)
├── InjectionTable_Engine/ # 注入核心注入模块存放处
├── Injection_interface/ # 注入核心接口(AutoLoad入口)
├── Injection_Login_System/ # 登录系统注入模块
└── Injection_Server_System/ # 服务器/联机系统注入模块
├── 02_Game/ # 游戏业务层(场景与组件)
├── Component/ # 游戏组件
├── Level/ # 关卡/场景文件
└── System/ # 游戏系统模块
├── 05_Util/ # 通用工具库
├── Debug_Tool/ # 调试工具
└── InstantiationTool/ # 安全实例化工具
├── Python_configuration_table_code/ # Python配置解析工具目录
├── Injection_Table/ # Excel配置表存放目录
├── spreadsheet_processing/ # 表格处理核心模块
└── InjectionConvert.json # 输出的JSON配置文件
├── icon.svg
└── README.md
Godot主要结构图:

Godot全局AutoLoad状态:
Godot接口总管理器:
2. Godot 依赖注入实现演示
需要注意这里的演示将会简要解释对应,具体接口规则设置将会在子文章代码实现中阐述
注入使用的两个模块可以阅读以下文章(可读不读)
Godot(4.X): 外接Python处理Excel数据: 账号管理系统实现-CSDN博客
Godot(4.X): 全局AutoLoad网络管理中心实现_godot autoload-CSDN博客
1. Godot内部运行演示
上图已经给出Godot接口管理器的未运行状态,这里先给出Excel的状态,如下图(注入Excel)
解释:NAME: 注入模块名称 START: 是否启用模块 PATH: 注入模块地址
EXTRA: 是否有额外依赖 AFFILIATED: 额外依赖注入地址

或者容错状态:

两种状态 Godot 均能获取正确注入依赖,这里首先关闭两个注入,可以看到注入接口下没有注入:
也就是InjectionLogin 和 InjectionServer 无子模块
这时候在Excel中启动注入,可以发现:
InjectionLogin 和InjectionServer下被注入子模块
观察调试完整注入流程:

然后给出使用演示,多人模块注入后正常使用:

注入模块调试信息正常使用:

2. Python处理Excel运行演示
启动Python全局调试输出,观察Godot内接收的输出,可以看到Python的执行流程与Godot执行流程的顺序


符合本框架执行流程
3. 具体代码实现演示与解释
1. Python 处理转换Excel为注入Json
Godot(4.x): Python处理转换Excel为注入Json-CSDN博客
2. Godot 内注入数据处理与总接口实现
(更新中)
3. Godot 注入接口定制实现接口注入
(更新中)
4. 结尾与开源说明
本框架中预留了可能的热插拔的预留代码,可以尝试修改实现热插拔。以下为开源地址供获取代码: looooiiui/Godot-Dynamic-Di
