笔者是观摩刘钢先生讲解的 Unity 项目架构设计与开发管理后所总结记录的。

0×01 EmptyGo

  • 将所有的代码放到一个空的游戏对象中;
  • 使用 GameObject.Find() 来找到目标进行使用。

架构设计的雏形实现,缺点是当我们的项目越来越大的时候难以灵活管理;不适合大型项目。

0×02 Simple GameManager

GameManager.Instance.playSound("menu");

优点是: 是把EmptyGO做成一个单例来使用;比较适合小型项目;空物体进行全局引用。 缺点是: 把所有的逻辑都放在一个脚本中,不利于编译;而且会造成单一文件过于庞大;NO 即插即用。

0×03 Manager Of Managers

类似于分级结构,各司其职;比如音频管理,场景管理,关卡管理等,每一个都是一个单例脚本,配合使用。结构相对清晰。

  • MainManager
  • EventManager:消息传递管理
  • AudioManager:音效管理
  • GUIManager:图形视图管理
  • PoolManager:GO管理
  • LevelManager: 关卡管理
  • GameManager:核心机制管理
  • SaveManager:游戏进度管理
  • MenuManager:菜单行为动画管理

0×04 MVCS(StrangeIOC)

unity-StrongeIOC
Unity3D-StrongeIOC框架结构图

Strange是一个超轻量级且高度可扩展的控制反转控制(IoC)框架,专为C#和Unity编写。 它包含以下功能,其中大部分是可选的:

  • 一个核心绑定框架,几乎可以让你将一个或多个任何东西绑定到一个或多个其他任何东西。
  • 依赖注入
  • 反射绑定显著降低了采用反射效率的开销
  • 共享事件系统,EventDispatcher 和 Signals。
  • MonoBehaviour 调配
  • 可选的MVCS(模型/视图/控制器/服务)结构
  • 等等…

这个框架的想法很有意思;可以研究一下它的原理即源码。 地址:https://github.com/strangeioc/strangeioc

0×05 MVVM(uFrame)

unity-uFrame
Unity3D-uFrame框架结构