架构的重要性不言而喻,对于一个项目来说如果在开发初期就能确定好所使用的引擎,API以及各种系统之间的层次关系,那对于后续的开发一定会是事半功倍的,我想作者将软件架构放在第一章一定是想让Untiy程序员尤其是主程,一定要认真的对待架构这件事。
优秀的架构师不仅需要对每个子系统的决策方向进行深思熟虑,还要结合其他系统以及整体系统需求的方向进行设计。
如何进行架构设计?
系统架构图是由多个子系统架构图组成的,子系统的架构图种类可以有很多例如XML对象图(描述数据类之间的关系)、部署图(需要多少种服务器、它们分别起什么作用?)、时序图(系统程序的调用次序以及流程描述)。
架构的性能评估
作者对架构使用了以下几个指标作为架构性能好坏的参考:
1.承载力:从软件上来说,承载力可以表示一个架构至多能承载多少个逻辑系统并且不发生崩溃?。从项目开发来说,承载力也可以是项目设计至多能够承载多少个程序员共同开发且代码耦合性仍然能保持设计之初的要求?
2.可拓展性:可以适应不同的需求,对子功能进行拓展,同时不会影响其他子功能的正常使用
3.易用性:(架构师最容易忽视的一点),开发出的架子要容易使用,否则程序员开发效率低下,开发出来的功能也容易bug频出。设计架构时,需要站在程序员的角度来思考,使得子模块的编写只需要花费一点点心思在架构融合上,可以将注意力专注于用来实现模块的编码上。
4.可伸缩性: 当需求激增与锐减时,架构能否适应需求的变化而变化。例如:对于服务器来说,用户数目可能成百上千或者只有几个人,服务器架构应当是要随着服务器人数变化而变化的,从而使得服务器能够正常运行,或是减少服务器的开销。
利用分层思维构建Unity项目
架构设计通常需要灵活运用抽象、分层、分治和演化等思想。我们在尝试构建Unity项目式通常可以经过先分层后分治的方式来进行构建。
通常,我们会把项目分为:网络层,数据管理层,资源管理层,核心逻辑结构层,UI框架层。
再对每一次进行细分可以得到如下图所示:
当然,及时分成了这样问题对我们来说依然很大,怎么办?继续使用分治法对每一个功能进行细分。以下为例子:
数据表:使用excel文件还是JSON文件?读取以及导出的接口应该如何定义?
UI层:使用什么UI插件,是UGUI还是NGUI或是其他?针对界面基类,界面管理,输入事件封装进行选择
外部资源管理:确定是否使用AB(AssetBundle)包?AB包中资源如何分类?是否依赖AB包资源间的关系?是否加载与释放AB包?是否进行加密?
角色行为控制:人物移动的处理方案是怎么用的?摄像机使用与切换、动画编辑器、技能编辑器、以及技能编辑器与行为流的建立?
在设计好以上结构之后,我们需要在开发的过程中进行回顾,对架构进行再一次的调整优化(演化过程)。最后,应该要注意架构设计的文档要及时进行更新与完善,以便其他程序员可以快速的理解架构早点进入项目开发中。
标签:Unity3D,AB,架构,程序员,开发,软件架构,主程,服务器,进行 From: https://www.cnblogs.com/CatSevenMillion/p/17369615.html