框架与架构

参考博客:https://blog.****.net/weixin_39706943/article/details/80594981
框架和架构都是为了解决软件系统日益复杂所带来的困难而采取“分而治之”思维的结果,架构决策往往会体现在框架之中。所以人们常把架构和框架混为一谈。

框架(Architecture):框(约束性)、架(支撑性)。先通用后专用。
框架是软件的通用半成品。它并不能提供完整无缺的解决方案。而是为构建解决方案体用良好的基础。必须根据具体需求进一步定制开发才能变成应用系统。

架构(Framework):架构是问题的抽象解决方案,关注大局而忽略细节。
架构是软件如何设计的重要策略。是开发者共同遵循的规则和共识。任何一段具体的代码都代表不了架构。因为软件架构是比具体代码高一个抽象层次的概念。架构势必被代码所体现和遵循。

框架与架构

常用架构

EmptyGO:

在 Hierarchy 上创建一个空的 GameObject,然后挂上所有与 GameObject 无关的逻辑控制的脚本。使用GameObject.Find() 访问对象数据。

缺点:逻辑代码散落在各处,不适合大型项目。

Simple GameManager:

所有与 GameObject 无关的逻辑都放在一个单例中。

缺点:单一文件过于庞大。

Manager Of Managers:

将不同的功能单独管理。如下:
MainManager: 作为入口管理器。
EventManager: 消息管理。
GUIManager: 图形视图管理。
AudioManager: 音效管理。
PoolManager: GameObject管理(减少动态开辟内存消耗,减少GC)。
LevelManager: 关卡管理。
GameManager: 游戏管理。
SaveManager: 配置&存储管理。
MenuManager 菜单管理。

将 View 和 Model 之间增加一个媒介层。

MVCS:StrangeIOC 插件。

MVVM:uFrame 插件。

ECS (Entity Component Based System)

Unity 是基于 ECS,比较适合 GamePlay 模块使用。 还有比较有名的 Entitas-CSharp