CPU优化

作者: 晓龙酱 | 来源:发表于2017-10-25 15:50 被阅读15次

    渲染模块

    • 降低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优化

          本文链接:https://www.haomeiwen.com/subject/bkwmuxtx.html