12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 4124|回复: 10
打印 上一主题 下一主题

[其他] Unity3D如何有效地组织代码?

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-6-1 23:46:18 |只看该作者 |倒序浏览
(来自知乎的转载)

准确地说,代码作为Unity项目里的一种资源,此问题应该扩展到如何组织Unity资源。简单说说我们的经验:

- Unity有一些自身的约定,譬如项目里的Editor,Plugins等目录作为编辑器,插件目录等等。知名的插件会自己存放一个目录,譬如NGUI等。

所以我们自己的代码,一般目录名会以下划线开头,譬如 "_Scripts", "_Prefabs"等。

对于场景,文档等目录,用两条下划线,以便他们能排在最顶部。

- 代码用C#,别用JS。必要的话用namespace将自己的代码括起来。我们是用namespace把自己积攒的公用库包住。

- C#的注释要认真写,打///就能帮你补全了,没理由偷懒。

- 每个程序文件开头要用一段注释写修改Log,谁改过什么简单留一条说明。就算用了Unity的版本管理或者Git,那些log终究会丢失,只有认真把log写在代码里,才会有意识去认真优化它。

- Unity的脚本逻辑,就功能而言大体分为两种,一种是比较独立的,譬如爆炸之后1秒钟消失,这种单独写个脚本绑定到目标上即可。

更多的是脚本里与其它的脚本进行交互。Unity里提供了一种万金油的方法是SendMessage, 这种方法性能略差,如果你调用的频率不高,随便用也无妨。另一种方法是直接通过对象的实例去调用。

我们的做法是写几个公用的控制器,让它们各司其职,负责各自的事情:

- 写一个一个GlobalManager.cs来控制游戏的全局变量及全局方法。静态类模式。譬如当前玩到第几大关第几小关,玩家的金币数量等。

- 写一个GameController.cs来控制当前关的游戏进程。单实例模式。游戏的主循环也是用它控制。初始化,胜利、失败判定等等。

- 写一个InputController.cs来控制所有的用户输入。单实例模式。鼠标、键盘、触摸屏,我们做游戏是保证同时支持这三种输入的,因为大部分时间是在PC上测试。

关于GameController与InputController的联系,有点让人纠结。一般来讲是在InputContoller里调用GameController.Instance.Foo()执行方法。或者直接对Input写成Listener的模式,让GameController去监听。

- 其它的类似菜单控制器,声音控制器,成就控制器,IAP虚拟道具控制器等等,也是采用类似的方法管理。

- 关于PlayerPref的操作,统一写成静态类的get/set模式,程序中哪里要用则直接读写。

- 如果你的项目里场景的数量少(<5),那么拖入场景的资源可以很随意。如果场景数量很多(几十个,有的解谜游戏每个关卡就是一个场景),那么拖入场景的prefab数量一定要少。

- 设计你的prefab资源里,你要想像当其他人拿到这些资源,是否直接拖入一个空场景里就能run,顶多再简单设置几下。如果你设计的资源不能做到这些,那么得好好重新想想。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-6-1 23:50:34 |只看该作者
Great resource, thank you!
回复

使用道具 举报

7

主题

0

听众

2518

积分

中级设计师

Rank: 5Rank: 5

纳金币
317
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-6-2 00:44:22 |只看该作者
小的把此文章複製到電腦筆記本兒了
感謝狂風大尉大人提供知識教程
回复

使用道具 举报

0

主题

3

听众

2381

积分

中级设计师

Rank: 5Rank: 5

纳金币
778
精华
0
地板
发表于 2014-6-2 10:32:51 |只看该作者
感谢分享
回复

使用道具 举报

u甲    

0

主题

1

听众

36

积分

设计初学者

Rank: 1

纳金币
3
精华
0

活跃会员 灌水之王

5#
发表于 2014-6-2 11:01:09 |只看该作者
恩,有门道,好
回复

使用道具 举报

wucnj    

1

主题

1

听众

3160

积分

中级设计师

Rank: 5Rank: 5

纳金币
1065
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2014-6-3 10:48:45 |只看该作者
感谢分享!!!
回复

使用道具 举报

xx232    

17

主题

9

听众

3505

积分

中级设计师

Rank: 5Rank: 5

纳金币
865
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2014-6-11 12:00:24 |只看该作者
我也看见这条了  不过看完发现还是不知道这个结构怎么梳理
回复

使用道具 举报

0

主题

1

听众

236

积分

设计实习生

Rank: 2

纳金币
6
精华
0

最佳新人

8#
发表于 2014-6-14 18:12:26 |只看该作者
不错不错,很好用
回复

使用道具 举报

0

主题

1

听众

758

积分

初级设计师

Rank: 3Rank: 3

纳金币
8
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2014-6-16 14:18:46 |只看该作者

很好不解释,求下载
回复

使用道具 举报

0

主题

1

听众

164

积分

设计实习生

Rank: 2

纳金币
8
精华
0

最佳新人

10#
发表于 2014-6-16 14:24:34 |只看该作者
感谢分享
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-19 02:43 , Processed in 0.153767 second(s), 36 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部