当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/915021/

相关文章:

  • 内存计算架构原理、实现与应用解析
  • 用Python+GDAL处理GLASS LAI数据:一个不依赖ArcGIS的免费替代方案
  • 2026年etpu发泡产品制造商排名,口碑好的有哪些? - 工业推荐榜
  • 快手图片去水印软件怎么用?不同场景的处理方法与工具选择方案 - 科技热点发布
  • 2026 锌钢护栏网源头厂家及小区庭院铁艺围栏产品综合测评分析 - 栗子测评
  • Windows右键菜单终极管理指南:用ContextMenuManager让右键菜单秒开如飞
  • 绕线机远程监控运维系统方案
  • 2026教培无人机、低空经济无人机、清洗无人机源头厂家实力推荐 - 栗子测评
  • 2026年佰维存储数字IC笔试试卷带答案
  • 2026年05月值得关注!冷冻库实力厂家口碑推荐揭秘,速冻库/土建冷库/装配式冷库/小型冷库/冷库,冷冻库品牌哪个好 - 品牌推荐师
  • 2026年豆包广告公司价格,济宁威兴信息科技有限公司收费合理 - mypinpai
  • 2026 公路护栏网生产厂家综合测评梳理公路隔离栅实体工厂与高速隔离栅选购方向 - 栗子测评
  • 主流开发语言和开发环境介绍
  • 手机号码归属地查询终极指南:3秒实现精准定位的完整解决方案
  • 2026年地埋箱泵一体化选购指南:费用怎么算? - mypinpai
  • 2026年瑞丽翡翠厂家口碑推荐榜:翡翠定制、缅甸翡翠、翡翠手镯、天然翡翠、翡翠鉴定厂家选择指南,货源、工艺、品控三维度权威解析 - 海棠依旧大
  • 常州闲置名表变现攻略:免费估价全域上门,劳力士欧米茄全品类回收 - 奢侈品回收测评
  • 告别 ifconfig!在 Ubuntu 22.04 上优雅地配置静态 IP 与解决网卡重启丢失问题
  • 2026 板式盆式高阻尼橡胶支座钢结构球型支座工厂产品性能综合测评 - 栗子测评
  • Keil MDK安装报错Entry Point Not Found的解决方案
  • 3.46 基于改进孪生神经网络的手机摄影视觉定位
  • 别再死记硬背了!用Kettle调用存储过程的保姆级图文教程(含参数配置)
  • 2026 锌钢护栏网源头厂家综合推介对比小区铁艺围栏与庭院围栏铁艺厂家实力 - 栗子测评
  • 2026年吉林昌邑售后有保障的TOP5电器门店,都有哪些值得关注?
  • Ubuntu 18.04/20.04上TensorRT的deb安装避坑指南:为什么你的CUDA和TensorRT版本总打架?
  • 2026年年度GEO推广好用吗 - mypinpai
  • 2026年论文降AI保姆级指南:实测降AI权威指令+三款工具深度横评,手把手教你安全通关 - 降AI实验室
  • 2026绍兴液压升降平台液压货梯维修公司+杭州液压升降货梯液压升降平台厂家推荐:杭州液压货梯维修公司汇总 - 栗子测评
  • AI时代组织效能悖论:个体效率提升为何导致团队协作降级?
  • 2026 主流铁路护栏网定制厂家整理 综合对比铁路防护栅栏哪家好及实体生产厂家实力 - 栗子测评