Unity项目工程结构(一)

转自:不以规矩,不成方圆 unity3d系列教程二

https://github.com/CodeSuperHero/UnityFrame 本博客所有关于unity3d的源码均包含在此工程中。

不以规矩,不成方圆
本文章定位于新手进阶,从新手过渡到中级开发人员,首先重视第一条就是规矩,我是从新手走过来的,现在打交道最多的也是新手,观新手代码,最大感受就是没有规矩,看起来杂乱无章,先不论其它,第一眼过去就完全没什么心情继续查看了,而却杂乱的代码带来很多负面影响,诸如维护性差,不可查找,工程结构混乱等等。

那么到底要注意什么规矩?

规矩其一:代码规范

规矩其二:代码框架

规矩其三:工程结构

代码规范
先上代码


1 //CodeSuperHero 20150520  

2 //R1    XXX 20150520  

3 //      xxxxxxxxx  

4 //      xxxxxxxxx  

5 //R2    YYY 20150520  

6 //      yyyyyyyyy  

7 //      yyyyyyyy  

8  

9   using UnityEngine; 

10 using System.Collections; 

11  

12 //类说明以顶部为例,尽量简化信息

13 //第一行用 //"name"+"Tab"+"time"作为开发者的信息 

14 //后续更改以R+版本号为开头,用tab分隔,加上名字,时间和更改内容

15  

16 //类,结构体,接口,枚举,变量,方法的注释均以 "///" 注释。在代码中间的注释可以选择 "//"或者 "/*  */" 

17  

18 namespace UnityFrame.Example 

19 { 

20    ///

21    /// 结构体以大写字母"S"开头。

22    /// 之所以特别区分,是因为在CSharp代码中,结构体是值类型,存储在栈上,每次传递和赋值均会被复制。所以用S开头以明显区分结构体和类。 

23    ///  

24    public struct SExample 

25    { 

26  

27    } 

28  

29    ///

30    /// 枚举变量以大写字母"E"开头

31    ///

32    public enum EExample 

33    { 

34  

35    } 

36  

37    ///

38    /// 范例接口,接口声明以大写 “I”字母开头。

39    ///

40    public interface IExample 

41    { 

42        void ExampleFunc(int threeExample); 

43    }

 44  

45    ///

46    /// 范例类

47    ///

48    public class Example : IExample 

49    { 

50        ///

51        /// 常量全部字母大写,以_连接字母

52        ///

53        public const int EXAMPLE_ZERO = 0; 

54  

55        ///

56        /// 静态变量每个单词首字母大写

57        ///

58        public static int ExampleZero = 0; 

59  

60        ///

61        /// 私有变量以“m”开头,单词首字母大写

62        ///

63        private int mZeroExample = 0; 

64  

65        ///

66        /// 保护变量与私有变量一样

67        ///

68        protected int mOneExample = 1; 

69  

70        ///

71        /// 公有变量首字母小写,其余单词首字母大写

72        ///

73        public int twoExample = 2; 

74  

75        ///

76        /// 属性同公有变量

77        ///

78        public int zeroExample 

79        { 

80            get 

81            { 

82                return mZeroExample; 

83            } 

84            set

85            { 

86                mZeroExample = value; 

87            } 

88        } 

89  

90        ///

91        /// 公有方法每个单词均首字母大写

92        ///

93        ///

94        public void ExampleFunc(int threeExample) 

95        { 

96  

97        } 

98  

99        ///

100        /// 私有方法同公有方法

101        ///

102        ///

103        ///

104        void ExampleFunTwo(int threeExample, int fourExample)

105        {

106            //在程序中间注释使用"//"在待注释代码上面一行。

107            //如果代码中出现有大量参数罗列,或者一行代码必须写很长的时候可以用"/*  */"在程序中直接进行注释,方便阅读。

108            int[] indexArray = new int[5] { 1, /* 第二个值 */ 2, 3, 4, 5 };

109        }

110    }

111 }

我喜欢直接以代码进行说明,不喜欢看纯文字那种,半天都无法理解具体意图。

代码中注释已经讲解了大半,还有隐含在代码中的有

1.统一的缩进,tab键设置为4个空格。

2.统一的大括号位置。

3.所有的逗号分隔后面必须空格。

4成员变量,成员函数之间直接留一行空格。

5.所有变量名必须是可读的。

注:代码风格我并没有严格参照某种代码风格命名,而是加了一点点自己的喜好进去。

代码框架
代码框架我暂时还没办法实际举例,如感兴趣,可以持续关注本教程,会在后续文章讲解。

简单描述就是 代码框架约束和规范了你的逻辑应该写在什么地方,你应该怎么去通信,而不是按照以前的方式随意使用静态变量,单例来书写逻辑。

工程结构
工程结构是约束整个unity3d工程的文件存放位置。想想你有一个大型的项目文件柜,而这些文件就好比一堆项目资料,对比一个整理完善、有序存放的文件柜,和一个文件互相交错,存放无序的文件柜,我相信你一定会选择第一个,因为第二个对于你来说就是噩梦般的存在。废话不多说,我先上我得工程目录结构

212353520726966.png

如果你能严格按照这个目录,整个工程就可以从始至终保持这个结构而不凌乱。

Assets    #unity3d 默认主目录。

-----Editor #编辑器类存放文件夹。

-----ExternalLibraries #大型完善的外部库文件存放目录,如NGUI等拥有完善的目录结构和大量代码的插件,就存放在此目录。有些人喜欢把NGUI目录直接存放在plugins目录下其实是不太好的,因为plugins文件夹也是要参与编译的。

-----GameAssets #游戏美术资源存放地,因为美术童鞋都是单独工程进行编辑,然后导出unitypackage文件,这个文件最大的坏处就是在导入时可能会污染目录结构,导致每次导入文件,均要手动调整目录,而单独命名一个GameAssets目录,再把这个目录复制到美术童鞋的工程里面,让美术童鞋编辑玩资源后,只把需要导出的资源放入这个目录存放妥当,再导出unitypackage文件。

------------|Materials  #材质球。

------------|Models   #模型,如果动画系统采用animation,把动画文件和原始模型存放在同一目录下,如果采用animtor,因为动画重用的关系,动画文件需单独存放。

------------|Animations #用新的Mecanim时,存放动画文件。

------------|Prefabs  #预制体,所有不需要Resource.Load加载的预制体,均存放在此。

------------|Sounds  #声音文件

------------|Textures  #贴图文件

------------|UI     #一些UI文件,如Atlas等。

------Plugins  #dll和一些纯代码插件。

------Resources  #所有需要通过Resource.Load加载的资源都存放于此

------Scenes    #scenes文件存放目录

------Scripts    #代码目录

------StreamingAssets

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,032评论 25 707
  • 111. [动画系统]如何将其他类型的动画转换成关键帧动画? 动画->点缓存->关键帧 112. [动画]Unit...
    胤醚貔貅阅读 13,004评论 3 90
  • 最先执行的方法是: 1、(激活时的初始化代码)Awake,2、Start、3、Update【FixUpdate、L...
    困卡阅读 4,176评论 0 8
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,089评论 4 62
  • 刚毕业的时候,工资不高,没办法,只能住公司宿舍。那会儿公司宿舍是一间三室一厅一卫的房子,我们4个姑娘在主卧,高低床...
    沐棉绽放阅读 612评论 0 0