CPU优化

渲染模块

  • 降低DrawDall
    通过批渲染来达来降低DC。

  • 简化资源

    • 模型面数,数量
    • 纹理数量
    • 纹理尺寸
    • 纹理格式
      选择硬件支持的纹理格式不仅可以减小内存空间,同时也能减少加载时间。对于安卓来说:ETC > RGB16bit > RGB32bit

https://blog.uwa4d.com/archives/LoadingPerformance_Texture.html

  • LOD
    距相机较远时,使用低模渲染。

  • Occlusion Culing
    剔除视域内,但被其它遮挡住的物体,避免对这部分物体进行渲染。

  • Culling Distance
    可以针对不同层,设置不同的Culling Distance。

UI模块

  • NGUI.LateUpdate
    1. 尽可能将动态UI元素和静态UI元素分离到不同的UIPanel中(UI的重建以UIPanel为单位),从而尽可能将因为变动的UI元素引起的重构控制在较小的范围内;

    2. 尽可能让动态UI元素按照同步性进行划分,即运动频率不同的UI元素尽可能分离放在不同的UIPanel中;

    3. 控制同一个UIPanel中动态UI元素的数量,数量越多,所创建的Mesh越大,从而使得重构的开销显著增加。比如,战斗过程中的HUD运动血条可能会出现较多,此时,建议研发团队将运动血条分离成不同的UIPanel,每组UIPanel下5~10个动态UI为宜。这种做法,其本质是从概率上尽可能降低单帧中UIPanel的重建开销。

加载模块

主要集中在场景切换时,要卸载旧场景还要加载新场景。

  • 场景卸载

    1. Destroy
      除了卸载那些没有标识“DontDestroyOnLoad”的资源外,还要调用所有Mono脚本中的OnDestroy方法。这部分消耗主要由OnDestroy中的代码决定。

    2. Resources.UnloadUnusedAssets
      以非Addtively方式切换场景时,引擎会自动调用此接口;同时在场景加载完成后,用户也会手动调用此接口。消耗主要取决于场景中的资源数量。

  • 场景加载

    1. 资源加载
      加载效率主要由加载方式,加载量,资源格式(贴图,网格,材质等)等决定。

    2. Instantiate实例化
      一方面,实例化的最大消耗在于依赖资源的加载,预加载可以解决;另一方面,脚本序列化消耗也不少,特别是有很多被SerializedField标识的变量。

代码效率

80%的性能开销都集中在20%的函数上。

你可能感兴趣的:(CPU优化)