# 架构分层
我们将代码划分为了三个部分: GameObject Layer 、Global Layer 和 UtilityLayer 。每层中包含多个模块,每个模块包含多个子模块,每个子模块都对应了一个或者多个类用于实现该模块的功能。
GameObject Layer 中的模块与游戏表现给玩家的功能直接相关,即:玩家是通过这一层中的模块与游戏交互的,游戏也通过这一层向玩家呈现自身;这一层中的模块都是绑定在某个特定的游戏物体(GameObject)上的,并一般会被制作成预制体(Prefab)以便重复使用。
Global Layer 中的模块直接实现了游戏的某种功能或逻辑,例如Relic模块实现了对于藏品的管理,包括藏品信息查询、藏品随机、藏品生成等。这些模块使用单例模式或是在整个游戏场景中只存在一个,你都可以通过ClassName.GetInstance()
直接获得这些Manager对象的引用。
Utility Layer 中的模块不直接为某个特定游戏系统提供支持,它们被用于整个项目。例如,任何时候都可以(也应该)使用RandomGenerator来获得一个新的随机数,它会将这个随机数计入序列,并在存档时保持不变。这些模块的设计模式形态各异,以好用为优先考虑。
其中Archive模块贯穿两层,因为其不仅实现了存档系统,而且还支持了所有其他模块的存档和加载;PrefabList和PositionManager两个模块在上面两层重复出现,是因为这些模块与它们具有强相关性。