查看: 2801|回复: 0
打印 上一主题 下一主题

[经验分享] Unity3D怎样科学地组织代码?(下)

[复制链接]

25

主题

1

听众

314

积分

设计实习生

Rank: 2

纳金币
48
精华
0
跳转到指定楼层
楼主
发表于 2016-8-18 17:25:05 |只看该作者 |倒序浏览
哈喽,欢迎来到汇宝盆!如果你经常逛汇宝盆,相信你会看到很多用3D模型用到unity插件,准确地说,代码作为unity插件里的一种资源,此问题应该扩展到如何组织unity插件资源。今天,承接上期的内容,继续说说汇宝盆收集到的设计师们的经验:
通常的做法是写几个公用的控制器,让它们各司其职,负责各自的事情:

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

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

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

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

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

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

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

- 设计你的prefab资源里,你要想像当其他人拿到这些资源,是否直接拖入一个空场景里就能run,顶多再简单设置几下。如果你设计的资源不能做到这些,那么得好好重新想想。
今天就到这里,汇宝盆需要你的光与热,如果有更不错的技术性信息补充,欢迎进群讨论分享,纳金网汇宝盆交流⑤群 341024464

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2024-11-29 10:15 , Processed in 0.091023 second(s), 29 queries .

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

© 2008-2019 Narkii Inc.

回顶部