Unity项目如何架构(一)目录组织

发表于2016-03-22
评论1 7.3k浏览
  从2015年的八月份开始,因为公司技术方向的原因,我从 iOS 开发转向Unity,前前后后学习 Unity 开发也差不多快五个多月了,由于公司内没有熟悉Unity 的同事,所以基本上都靠自己一点一点的摸索,一路磕磕绊绊的走过来,自己也有一些心得。
  除了基本的开发知识的学习,我特别关心如何搭建一个清晰而又灵活的Unity 项目的架构。一个好的项目架构在前期的开发和后期的维护方面,都会带来极大的好处,直接关系到后面多人协作开发时的效率,所以我也在架构方面做了很多的尝试和思考。
  当然,首先我要声明的一点是 脱离了产品需求而空谈架构就是在耍流氓 。我下面的架构是基于我当前在做的产品需求定的,所以不一定完全适合你。
首先我们先来看一下项目的目录结构。


  上图中的文件夹就是项目的主要结构,我把所有的在 Assets/ 目录下的自己创建的文件夹都约定使用下划线开始的名字命名。
1、_3rd/ 文件夹下存放的是所有的第三方的插件或者类库。
2、_Framework/ 主要存放独立的基础组件,这部分的代码和具体的业务需求无关,可以在多个不同的项目之间进行复用。当然,也可以打包成 unitypackage 方便使用。
3、_resources/ 下面存放所有的资源文件,在 _resources/目录下面还会有更详细的分类,下面详细介绍。
4、_Scenes/ 存放所有的场景文件,为了避免多人协作编辑同一个场景导致的冲突,所以最好将可以将页面按照需求独立成不同的场景,不同的人编辑不同的场景。
5、_Scripts/ 存放的是所有的和项目需求相关的代码脚本,下面详细介绍。
6、其他的两个目录没有用下划线作为名字的开始,所以它们是Unity 工程的特殊目录,这块我不详细介绍,大家可以自行学习相关的知识。
  上面这种项目目录的组织方式可以让我能够快速清晰的定位不同的资源。下面我们再来近距离的看看项目的目录组织结构。
  在 _3rd/ 目录下面是这样的:


在 _Framework/ 下面是这样的:


  这部分都是一些通用性质的组件,包括一些例如 BaseBehaviour 之类的基类和一些 Manager 性质的组件如负责事件传递的 MessageCenter 、管理页面打开和关闭的UIManager 等。
  在 _Resources/ 目录下面是按照资源的种类进行分组的,在每一个类别下面再根据不同的页面或者需求点进行细分。如下所示:


在 _Scripts/ 目录下面存放的是项目需求相关的代码。


  如上所示,Editor/ 目录下面是一些编辑器扩展,主要是一些打包 AssetBundle 之类的辅助工具。
  Game/ 目录又按照 MVC + Component 架构模式分拆。MVC 架构这个是很流行的架构,方便进行代码的责任分拆。因为 Unity 下面组件开发非常方便,所以我又特地的在 MVC 模式的基础上添加了 Component 模式,进一步的增加灵活性和独立性。
  Lua/ 目录存放的是所有的 .lua 文件。因为热更新的需求,所以我使用了 ulua 插件。这个 Lua/ 目录下是具体的和项目相关的并且是使用 lua 脚本实现的代码。
  我们再来看一下项目目录组织的完整的图吧。


OK,关于目录结构的组织这块暂时讲到这里,欢迎大家挑错指导。

  加入GAD的核心用户QQ群:484290331,各类活动奖励任你拿,最新资讯任你读,众多教学任你免费学,如此好地方赶紧加入吧!另VR专属群:476511561,专业VR技术分享,专业导师指导为你答疑解惑,大型小型活动奖励等你拿,免费学习赚奖励的天地,欢迎你加入哟!


如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引