最近给组里定Unity开发注意事项,参考了@陆泽西在群里分享的[前端开发规范],结合自己工作中的经验,整理一下,下面不少条款都是我们要求在开发中必须遵守的。


资源:

  • 图片统一为png格式,纹理属性:TextureType设为Advanced,2D纹理关闭Mipmap(size会增加33%),关闭Read/Write(会导致2倍内存),Wrap Mode为Clamp可避免黑边。

  • 纹理压缩格式选择:Windows使用DXT1,IOS使用RGB PVR,安卓使用ETC1。

  • 图片尽量使用纹理压缩,单独设置每个平台的压缩格式,如果不需要Alpha通道,请选RGB格式。

  • 拆分Alpha通道,然后采用前面所述的纹理压缩格式,shader采样合图。

  • 纹理宽/高必须为2的N次幂,否则会导致内存中双倍,大小不得超过2048。

  • 资源预加载,空间换时间;资源卸载,垃圾回收(战斗等需要流畅操作中避免)。

  • 做好图集管理。

  • 做好特效优化,控制好粒子数,慎用fog效果。


NGUI:

  • 拼UI规划好Depth的范围,减少Altas或文字间的Depth交替,降低Draw Call。

  • 很重要并常用的UI在关闭时,可以考虑移除摄影机范围。常用但不重要的UI在关闭时,可以使用SetActive(false)。

  • UI界面制作时,动静分离,动的放在一个UIPanel里,减少NGUI重建Mesh。

  • 其它:列表item重用优化,unity原生代替ngui实现等。


C#:

  • 删除MonoBehaviour子类中不用的默认方法,像Start/Update等。

  • 脚步不使用时禁掉。

  • 缓存多次使用的对象/组件。

  • Update中禁止使用foreach。因为装箱/拆箱导致GC,Array/List用for循环,字典用Enumerator。ps. Unity官方已经在着手解决这个很古老的bug了,5.5版本有望解决。

  • 不要使用Linq表达式。LINQ内部会有New操作或使用foreach,从而产生GC。

  • 协程会产生GC。

  • 需要反复创建的对象,使用对象池。

  • struct做为Dictionary的Key的时候,要去实现IEquatable接口,不然每次Contains都会产生GC。

  • 减少字符串拼接,用string.Format或StringBuilder代替+号。

  • 临时变量减少堆对象使用,能采用栈对象就用栈对象。

  • 用CompareTag(xx)代替obj.tag == xx。

  • 减少网络收发,减少多线程,减少Update逻辑。


lua:

  • 尽量使用local,相比global提升30%左右。

  • table创建时预填充,确定表大小。

  • 大字符串连接中,应避免..,用table来模拟buffer,然后concat得到最终字符串。

  • Reuse,循环外构造对象。

Unity3D开发注意事项的更多相关文章

  1. 跟我从零基础学习Unity3D开发--NGUI入门基础

    英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...

  2. delphi 串口 关于RS485总线通信协议开发注意事项

    http://blog.csdn.net/shjhuang/article/details/9426739 关于RS485总线通信协议开发注意事项 1       前言 近段时间发现我们系统在进行设备 ...

  3. win7虚拟打印驱动开发注意事项

    win7虚拟打印驱动开发注意事项 通过控制面板安装遇到以下问题:错误1.提示“Printer driver was not installed. Operation could not be comp ...

  4. Unity3d开发IOS游戏 基础

    Unity3d开发IOS游戏 基础 @阿龙 -  649998群 1.先说明两个问题,我在WIN7下面的U3D里面,用了雅黑字体,但是导出为ios后,字体就看不见了,这是为什么呢?这是需要在MAC下找 ...

  5. Unity3D开发必备神器(Visual Studio Tools for Unity)

    Unity3D开发必备神器(Visual Studio Tools for Unity) 开发Unity3D程序你用的什么IDE呢? 1.MonoDevelop 2.VS 可能你的回答是这样的,我用的 ...

  6. MUI开发注意事项

    mui开发注意事项,有需要的朋友可以参考下. mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细的 ...

  7. 【Unity3D】Unity3D开发《我的世界》之六、创建地形(视频 + 源码)

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/unity_minecraft_06.html 一.引入LibNoise 虽然Unity3D里也有一个Mathf.P ...

  8. 跨平台移动APP开发进阶(一)mui开发注意事项

    mui开发注意事项 Mui HTML5开发框架 mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细 ...

  9. 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)

    添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...

随机推荐

  1. PHP实现统计在线人数功能示例

    本文实例讲述了PHP实现统计在线人数的方法.分享给大家供大家参考,具体如下: 我记得ASP里面统计在线人数用application 这个对象就可以了.PHP怎么设计? PHP对session对象的封装 ...

  2. js字符串操作总结

    字符方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...

  3. The first week CorelDRAW 课总结:

    1.这节课学到了什么知识? 答:(1)认识了CorelDRAW X4的工作界面(由标题栏 菜单栏 工具栏 属性栏 工具箱 页面控制栏 状态栏 绘图区和调色板组成): (2)CorelDRAW X4的基 ...

  4. 解决 Can't Connect to MySQL Server on IPAddress (10061) 的问题

    我的MySQL服务器安装在Ubuntu 14.04.3 LTS操作系统上. 然后我通过局域网内的另一台电脑连不上,但是能ping通. 解决办法是首先找到my.cnf这个文件. 我的文件位置在/etc/ ...

  5. lsdyna进阶教程-弹性球撞击刚性平板

    在lsdyna基础教程中,我们做了一个关于刚性球撞击弹性平板的粒子,现在我们考虑另外一个问题,如果用弹性球撞击刚性地面该怎么做呢?是不是要从头开始建模,操作步骤是不是一样呢?其实很简单,将球和地面的材 ...

  6. 前端之旅HTML与CSS篇之清除浮动塌陷

    以下内容为转载. 方法1:给浮动的元素的上级添加高度如果一个元素要浮动,那么它的祖先元素一定要有高度.高度的盒子,才能关住浮动.只要浮动在一个有高度的盒子中,那么这个浮动就不会影响后面的浮动元素.所以 ...

  7. [LeetCode] Find Anagram Mappings 寻找异构映射

    Given two lists A and B, and B is an anagram of A. B is an anagram of A means B is made by randomizi ...

  8. “百度杯”CTF比赛 九月场_再见CMS(齐博cms)

    题目在i春秋ctf大本营 又是一道cms的题,打开御剑一通乱扫,发现后台登录地址,访问一看妥妥的齐博cms 记得以前很久以前利用一个注入通用漏洞,这里我贴上链接,里面有原理与利用方法详细说明: 齐博c ...

  9. ●洛谷P3168 [CQOI2015]任务查询系统

    题链: https://www.luogu.org/problemnew/show/P3168题解: 主席树 强制在线? 那就直接对每一个前缀时间建一个线段树(可持久化线段树),线段树维护优先度权值. ...

  10. codeforces round #419 C. Karen and Game

    C. Karen and Game time limit per test 2 seconds memory limit per test 512 megabytes input standard i ...