他山之石_1

一。粒子
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) ---->变更为设置 位置

优化方法:多协调 是策划 + 美术 + 程序 共同的结果

策划:效果可接受
美术:效果可接受 + 实现方法
程序:性能限制 + 实现方法

原文地址:https://www.cnblogs.com/javalzy/p/6943768.html