一。粒子
1. 池化粒子发射器:了解粒子发射器的原理
2. 缩放 + Color(不用色彩图片,动态更换色彩)
ETC1(RGB) + ETC1(A) + Color + 缩放
3. Mesh代替粒子特效: 动态合批,优化DrawCall
4. 材质合并(atlas对应数据放到顶点数据中)
5. 粒子特效也可以做 LOD group
6. 在效果差不多的情况下,以最优方式实现
7. 设置粒子特效的 render中的order in layer: 便于动态合批,但缺点是,order不同粒子重叠时可能前后关系错乱。
http://blog.csdn.net/meegomeego/article/details/42060389
[好1]: 粒子系统的消耗 > 粒子数的消耗:尽量减少粒子系统的个数。(在粒子总数一定的情况下,粒子系统的个数越少越好)
需要注意的:
a. 透明片的屏幕占比+堆叠层数
b. 粒子上的动画
c. 粒子上的顶点数据
d. Mesh
二。设置
1. 模型反锯齿设置:Editor--->Quality--->Anti Aliasing=Dissbled
2. 多线程渲染:开
3. 重直同步:关
4. Quality中的:最多像素灯个数 + BlendWeights
5. 贴图的: readable/writeable mipMap
6. Mesh: readable/writeable 是否支持法线
7. 是否支持网格优化
三。压力分频处理
1. 大量的Create可以分帧处理。
2. 计算量大的分帧处理,或缓存,或预计算。
3. 看CPU来做还是GPU来做。
四。异步
1. 场景分块加载:
2. ReSoure加载是同步操作,会卡。
五。GameObject数担
1. 分类管理
2. 分layer管理
3. 对象池:可以给prefab设置对象池上限,超出部分用默认preab. 来控制内存。
六。 CPU GPU分工
CPU--->叠多个材质,
GPU--->shader着色
1. Cpu: 善长串行:if else 合批 渲染队列
2. Gpu: 带宽 顶点处理 片元处理
3. InStaince: 需要OpenGL3.0(2.0貌似可以通过某些方式实现)
七。 物理
1. Time: Fixupdate调用间隔时间
2. 物理碰撞:a. 设置 b.碰撞体
八。MipMap
深入了解下:影响mipMap的距离具体是多少
九。UI
1. NGUI: UIDrawCall
2. UIPanel: 不要嵌套(??)
3. 使用完DestroyUI. (重新加载不会太卡)
4. UI上的模型异步加载
十. 动画
1。动画消隐被禁用 - 即使物体在屏幕外也动画。
objAnimation.cullingType != AnimationCullingType.AlwaysAnimate;
2. 减少骨胳数量 + AnimationClip数量。
动画(影响因素) = Clip的动画曲线 * 骨数 * Clip数量
3.勾选,动画导入设置里的:Optimize Game Objects
十一。协程
十二。耗电
一般都是CPU的问题。
十三。光
1. 可以不用灯,全靠shader实现,避免实时光照
2. 环境光 + 自发光 + 漫反射 + 高光
3. CubMap: 套在人物模型上
十四。规范(有规有距,方便管理和维护。特别是到了项目后期)
1. 命名规范+代码规范: 貌似腾讯有标准,也有专业检测工具。
--多用组合,少用继承。
--字典少用enmu做key
--loading时加载+instance,避免运行时Instance
--物体出屏幕外不可见+取消逻辑更新
--不用Tween插件,自已Update中来做。(可能看情况,比较适用于Tween实现不了的动画,或自已简单封装缓动函数)
十五:配置化:
1. 方例发挥策划及美术的想像力。结省开发成本。
2. 迟可能达到最优化
十六:分辨率
1. 将游戏渲染在一个小的 RenderTexture 上,之后绘制在屏幕上,减少像素填充率。 (貌似通过设置屏幕分辨率实现)
十七:Shader工具
1. Shader Forge
2. ASE ??
一百。其它
1. SetActive(bool) ---->变更为设置 位置
优化方法:多协调 是策划 + 美术 + 程序 共同的结果
策划:效果可接受
美术:效果可接受 + 实现方法
程序:性能限制 + 实现方法