位置: 编程技术 - 正文

Unity3D如何有效地组织代码?(unity3d documentation)

编辑:rootadmin

推荐整理分享Unity3D如何有效地组织代码?(unity3d documentation),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3d速成,unity3d速成,unity3d怎么做游戏,unity3d速成,unity3d怎么做游戏,unity3d documentation,unity3d怎么样,unity3d基本操作,内容如对您有帮助,希望把文章链接给更多的朋友!

欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

Unity3D可以说是高度的Component-Based Architecture,同时它的库提供了大量的全局变量。

准确地说,代码作为Unity项目里的一种资源,此问题应该扩展到如何组织Unity资源。简单说说我们的经验:1. Unity有一些自身的约定,譬如项目里的Editor,Plugins等目录作为编辑器,插件目录等等。知名的插件会自己存放一个目录,譬如NGUI等。所以我们自己的代码,一般目录名会以下划线开头,譬如 "_Scripts", "_Prefabs"等。对于场景,文档等目录,用两条下划线,以便他们能排在最顶部。

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

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

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

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

更多的是脚本里与其它的脚本进行交互。Unity里提供了一种万金油的方法是SendMessage, 这种方法性能略差,如果你调用的频率不高,随便用也无妨。另一种方法是直接通过对象的实例去调用。我们的做法是写几个公用的控制器,让它们各司其职,负责各自的事情:1. 写一个一个GlobalManager.cs来控制游戏的全局变量及全局方法。静态类模式。譬如当前玩到第几大关第几小关,玩家的金币数量等。

Unity3D如何有效地组织代码?(unity3d documentation)

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

3. 写一个InputController.cs来控制所有的用户输入。单实例模式。鼠标、键盘、触摸屏,我们做游戏是保证同时支持这三种输入的,因为大部分时间是在PC上测试。关于GameController与InputController的联系,有点让人纠结。一般来讲是在InputContoller里调用GameController.Instance.Foo()执行方法。或者直接对Input写成Listener的模式,让GameController去监听。

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

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

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

7. 设计你的prefab资源里,你要想像当其他人拿到这些资源,是否直接拖入一个空场景里就能run,顶多再简单设置几下。如果你设计的资源不能做到这些,那么得好好重新想想。写了这些,感觉写不下去了。想吃透Unity,起码得真做出几款产品放上线才行。真正做产品的过程中会碰到各种各样意想不到的问题,代码不断地被重构和妥协,不存在什么最佳的方案。暂时就写这些吧,希望能抛砖引玉。

(PS:当然,这个是根据公司大项目来说的,每个公司都有自己定的规范和框架,略有不同。如果是想打飞机,这类的小游戏是用不到这么麻烦的。看看就好,知道一下)

更多精彩请点击

Unity3D游戏开发最佳实践技巧(一) 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d

Unity3D脚本中Start()和Awake()的区别对比分析 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d

关于unity中的update、Lateupdate和FixedUpdate 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d

标签: unity3d documentation

本文链接地址:https://www.jiuchutong.com/biancheng/372923.html 转载请保留说明!

上一篇:unity3d游戏开发之整合vs2008来加快unity c#开发(unity3D游戏开发)

下一篇:Unity3D游戏开发最佳实践20技巧(一)(unity3D游戏开发)

  • 劳务税是什么 和个税的区别
  • 查询一般纳税人资格证明
  • 税控系统技术维护费会计处理280
  • 会计工资标准
  • 综合单价的调整计算公式
  • 主营业务收入开普票怎么记账
  • 不同组织的区别主要体现在哪些方面
  • 销售发票的会计处理
  • 委托加工消费税纳税义务发生时间
  • 利息保障倍数计算公式资本化利息
  • 企业所得税逾期申报怎么补报
  • 土地增值税预缴政策
  • 税款多交一分钱怎么做分录
  • 企业怎么申请无运输工具承运资质
  • 公司之间有哪些关系
  • 以前年度固定资产入账错误怎么办?
  • 企业减免6%的税的营业范围有哪些?
  • 预交增值税附加税费减免吗
  • 季报所得税可以预交吗
  • 减税的案例
  • 建筑业附加税税率是多少
  • 公司注销地税时其他应收款要缴纳个人所得税吗?
  • 个人承包承租经营所得采用什么税率
  • 直接收款涉及增值税吗
  • 分期收款发出商品属于什么科目
  • 转让投资性房地产收到售价款
  • 关联企业借款利息税前扣除
  • 存货跌价准备的金额
  • 补缴纳以前年度企业所得税税率如何论定
  • 出口退税生产企业税率
  • 华为p30分屏怎么操作
  • 在线网速测试网站测速工具
  • 单位出纳的业务有哪些
  • 临时股东大会的召开情形
  • win10系统关机后自动开机怎么办
  • 贷款本息转本金
  • jQuery+Ajax+PHP“喜欢”评级功能实现代码
  • macbook怎么设置输入法
  • 收到退回多付款现金流量支付购买商品支付
  • 借条未写还款期限,最长保护期是多久
  • PHP:ftp_delete()的用法_FTP函数
  • 固定资产如何做账务处理
  • 单位收到的投标通知书
  • b/s架构的正确解释方式
  • php 装饰器
  • 桌山 开普敦
  • 记录一次排查PHP脚本执行卡住的问题
  • 房地产开发企业会计制度
  • 软件开发增值税减免政策
  • 淘宝企业店必须绑定对公账户吗
  • java默认访问权限修饰符
  • python concat函数用法
  • 金蝶k3明细账如何查询
  • mysql存二进制用哪个字段
  • PHP MongoDB GridFS 存储文件的方法详解
  • 购买用品开专票怎么开
  • 利润分配未分配利润期末有余额吗
  • 增值税加计抵减是什么意思
  • 委托代销受托方会计分录
  • 计提了坏账准备就要计算递延所得税资产
  • 彩票扣税吗
  • 用友t3固定资产反结账的操作步骤
  • 资本金与注册资金的关系
  • 没有发票的费用怎么报销
  • xp系统电脑蓝屏无法正常启动怎么恢复
  • watchdog. sys
  • os x yosemite10.10.4beta2更新了哪些内容 os x yosemite性能增强和bug修复以及下载
  • 王牌竞速 小米
  • linux怎么挂载文件夹
  • node. js教程
  • 手机屏幕尺寸测量工具
  • javascript怎么学
  • cocos2dx schedule
  • js禁用键盘事件
  • js实现物体移动
  • javascript密码框
  • 申请小规模纳税人公司需要多久
  • 无锡梁溪区在哪
  • 盐城合作医疗在手机上怎么交
  • 企业收到上一年增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设