分享

【新提醒】Unity项目如何架构(一)目录组织[中国游戏开发者] [www.cgder.com] ...,好的项目,第三方,文件夹,下划线,如何,unity3d专区,中国游戏开发者

 阿修罗之狮猿授 2016-03-16
 [中国游戏开发者] [www.cgder.com]

从2015年的八月份开始,因为公司技术方向的原因,我从 iOS 开发转向 Unity,前前后后学习 Unity 开发也差不多快五个多月了,由于公司内没有熟悉 Unity 的同事,所以基本上都靠自己一点一点的摸索,一路磕磕绊绊的走过来,自己也有一些心得。

除了基本的开发知识的学习,我特别关心如何搭建一个清晰而又灵活的 Unity 项目的架构。一个好的项目架构在前期的开发和后期的维护方面,都会带来极大的好处,直接关系到后面多人协作开发时的效率,所以我也在架构方面做了很多的尝试和思考。

当然,首先我要声明的一点是 脱离了产品需求而空谈架构就是在耍流氓 。我下面的架构是基于我当前在做的产品需求定的,所以不一定完全适合你。

首先我们先来看一下项目的目录结构。

上图中的文件夹就是项目的主要结构,我把所有的在 Assets/ 目录下的自己创建的文件夹都约定使用下划线开始的名字命名。

  • _3rd/ 文件夹下存放的是所有的第三方的插件或者类库。

  • _Framework/ 主要存放独立的基础组件,这部分的代码和具体的业务需求无关,可以在多个不同的项目之间进行复用。当然,也可以打包成 unitypackage 方便使用。

  • _resources/ 下面存放所有的资源文件,在 _resources/目录下面还会有更详细的分类,下面详细介绍。

  • _Scenes/ 存放所有的场景文件,为了避免多人协作编辑同一个场景导致的冲突,所以最好将可以将页面按照需求独立成不同的场景,不同的人编辑不同的场景。

  • _Scripts/ 存放的是所有的和项目需求相关的代码脚本,下面详细介绍。

  • 其他的两个目录没有用下划线作为名字的开始,所以它们是Unity 工程的特殊目录,这块我不详细介绍,大家可以自行学习相关的知识。


上面这种项目目录的组织方式可以让我能够快速清晰的定位不同的资源。下面我们再来近距离的看看项目的目录组织结构。

在 _3rd/ 目录下面是这样的:

在 _Framework/ 下面是这样的:

这部分都是一些通用性质的组件,包括一些例如 BaseBehaviour 之类的基类和一些 Manager 性质的组件如负责事件传递的 MessageCenter 、管理页面打开和关闭的UIManager 等。

在 _Resources/ 目录下面是按照资源的种类进行分组的,在每一个类别下面再根据不同的页面或者需求点进行细分。如下所示:

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

如上所示,Editor/ 目录下面是一些编辑器扩展,主要是一些打包 AssetBundle 之类的辅助工具。

Game/ 目录又按照 MVC + Component 架构模式分拆。MVC 架构这个是很流行的架构,方便进行代码的责任分拆。因为 Unity 下面组件开发非常方便,所以我又特地的在 MVC 模式的基础上添加了 Component 模式,进一步的增加灵活性和独立性。

Lua/ 目录存放的是所有的 .lua 文件。因为热更新的需求,所以我使用了 ulua 插件。这个 Lua/ 目录下是具体的和项目相关的并且是使用 lua 脚本实现的代码。

我们再来看一下项目目录组织的完整的图吧。

本帖隐藏的内容

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

另外,之前对于 iOS 项目的目录组织我也曾写过一篇文章 如何组织一个iOS工程的的目录结构 ,感兴趣的也可以看一下。



[中国游戏开发者] [www.cgder.com]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多