【退休勇者】GameJam日志 #4:程序架构
1、引言
在GameJam里谈程序架构好像有点奢侈,但是一个足够灵活的程序架构能够使功能开发更加快速、稳定,再大的项目也能井井有条。而一个好的程序架构也不是一蹴而就的,是一次次开发使用过程中不断发现问题迭代而来的。今天我们要给大家展示的就是我们日常改进而来的程序架构。
2、整体架构概览

架构概览
如图所示,我们的架构可以简单分为两个层级:数据层和UI层。其中,数据层由GameManager驱动,GameManager是一个继承MonoBehaviour的全局单例,管理着所有其他Manager的生命周期。游戏中的不同系统被简单划分为不同的Manager,根据需要各自持有一个DataCtrl对象用来保存数据。而数据通过DataManager根据需求在游戏开始时加载或是懒加载到对应模块里。UI是一个相对独立的层级,所有UI的生命周期由UISystem控制,包括加载卸载、UI栈处理等。
3、数据与配置管理
在游戏中需要动态读取、存储的存档数据之外,还有一类静态数据的处理也是游戏开发中老生常谈的问题。没错,就是游戏中需要读取的各自配表。

配表
因为我们的游戏一般都是单机游戏,所以我们采用了Unity自带的SO(ScriptableObject)来存储静态配置。但是SO不方便编辑,于是我们又采用了从Excel到SO的工作流,并在游戏运行时将SO读取到内存。

Excel到SO的转换
4、关键工具
在整体开发中,我们也使用了JKFrame来加快游戏的开发进程。JKFrame整合了许多常用的组件,如UI管理、音效管理、资源加载等,可以避免重复造轮子的时间。例如我们队伍使用的SO转换工具也是在JKFrame的工具基础上改进的,增加了对列表、自定义数据结构、嵌套数据结构的支持;也改进了UI管理系统,使窗口支持多种初始化方式。如果大家感兴趣也可以看文章末尾的github链接,了解一下这个好用的工具~
5、尾声
非常感谢大家能看到这里(),如果大家对于自己项目的程序架构也有所心得,欢迎来评论区讨论~
Ref:
JKFrame官方仓库:https://github.com/Joker-YF/JKFrame
JKFrame官方文档:http://www.yfjoker.com/JKFrame/index.html

