最近给组里定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. 收藏:视频网站(JavaEE+FFmpeg)/Nginx+ffmpeg实现流媒体直播点播系统

    FFmpeg安装(windows环境)http://www.cnblogs.com/xiezhidong/p/6924775.html 最简单的视频网站(JavaEE+FFmpeg)http://bl ...

  2. jsonViewer json格式化工具

    以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这 ...

  3. PHP性能优化利器:生成器 yield理解

    如果是做Python或者其他语言的小伙伴,对于生成器应该不陌生.但很多PHP开发者或许都不知道生成器这个功能,可能是因为生成器是PHP 5.5.0才引入的功能,也可以是生成器作用不是很明显.但是,生成 ...

  4. 八:Vue下的国际化处理

    p { margin-bottom: 0.25cm; line-height: 120% } 1:首先安装 Vue-i8n npm install vue-i18n --save 注:-save-de ...

  5. jdk 动态代理源码分析

    闲来无事,撸撸源码 使用方法 直接看代码吧.. package com.test.demo.proxy; import java.lang.reflect.InvocationHandler; imp ...

  6. Docker入门之---ENTRYPOINT和CMD

    1. 前言  ENTRYPOINT 和CMD 都是Dockerfile 中的命令,两者都是用来:指定默认的容器的主进程的启动命令.那么接下来就介绍一下这两者在Dockerfile 中,以及Docker ...

  7. [LOJ 6270]数据结构板子题

    Description 有n个区间,第i个区间是[li,ri],它的长度是ri−li. 有q个询问,每个询问给定L,R,K,询问被[L,R]包含的且长度不小于K的区间数量. 你想,像这种板子题,你随手 ...

  8. [Luogu 3414]SAC#1 - 组合数

    Description 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 今天他萌上了组合数.现在他很想知道simga(C(n,i))是多少:其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案 ...

  9. [SDOI2011]黑白棋

    Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...

  10. [JSOI2008]球形空间产生器

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...