最近给组里定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. html的基本结构

    html的基本结构 1.<html>内容</html> html文档的文档标记,也称为html开始标记 这对标记分别位于网页的最前端和最后端,表示开始和结束 2.<hea ...

  2. Ajax实现注册无刷新验证用户名是否存在

    1. [代码][JavaScript]代码     ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

  3. linux-非root用户运行tomcat

    # 前言:为什么要使用非root用户运行tomcat root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(html/js)都具有root权 ...

  4. ES6 new syntax of Arrow Function

    Arrow Function.md Arrow Functions The basic syntax of an arrow function is as follows var fn = data ...

  5. “百度杯”CTF比赛 2017 二月场_onthink

    题目在i春秋ctf训练营中能找到,这题直接拿大佬的wp来充数 百度找到onethinnk的一个漏洞. 参考:http://www.hackdig.com/06/hack-36510.htm 就是注册个 ...

  6. STM32 - GPIO

    买了一个STM32F4的开发板,想把上面的东西重新学一下 快速过: 一.GPIO控制 void GPIO_DeInit(GPIO_TypeDef* GPIOx); //把某一个IO口恢复到默认值 /* ...

  7. 【转载自netfocus博客】聚合(根)、实体、值对象精炼思考总结

    1.内容摘要 最近在看DDD领域驱动设计,看到实体(Entity),值对象 (Value Object),以及聚合根(Aggregate Root) 时.对他们的关系有些模糊,不清楚.于是去找了找资料 ...

  8. 【BZOJ2242】【SDOI2011】计算器

    Description 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给定y ...

  9. [BZOJ]4405: [wc2016]挑战NPC(带花树)

    带花树模板 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...

  10. poj3185 高斯消元

    The Water Bowls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5329   Accepted: 2081 D ...