Godot(4.x): 游戏管理器: Excel 动态依赖注入实现

前言: 本文是Godot(4.x)版本实现的,基于 PythonGodot 实现的 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 均能获取正确注入依赖,这里首先关闭两个注入,可以看到注入接口下没有注入:

也就是InjectionLoginInjectionServer 无子模块

这时候在Excel中启动注入,可以发现:

InjectionLoginInjectionServer下被注入子模块

观察调试完整注入流程:

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

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

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

相关推荐
元气少女小圆丶1 小时前
SenseGlove Nova 2+Unity开发笔记3
笔记·unity·游戏引擎
WMX10122 小时前
Unity-shader学习记录
学习·unity·游戏引擎
WMX10122 小时前
Hololens 2 上部署 Unity+MRTK 项目_模型着色
unity·游戏引擎·hololens
游乐码2 小时前
unity基础(八)协程
游戏·unity·c#·游戏引擎
海兰14 小时前
【文字三国志:第三篇】天命重构,数据模型设计
人工智能·游戏
玉夏18 小时前
【Shader基础】ShaderLab 语法
unity·游戏引擎
科技每日热闻19 小时前
EVNIA弈威天王星舒视蓝4.0系列护眼显示器24M2N2200PK新品——小而强悍,久战不倦!
科技·游戏·计算机外设
玖玥拾20 小时前
Cocos学习笔记:自定义字体、骨骼动画与项目架构
游戏引擎·cocos2d
魔法阵维护师1 天前
从零开发游戏需要学习的c#模块,第二十八章(血条显示 —— 敌人与玩家生命可视化)
学习·游戏·c#