美文网首页
Unity程序优化

Unity程序优化

作者: 喜欢海苔Girl | 来源:发表于2020-08-22 11:00 被阅读0次

    内存

    • 尽量将不用的资源即使卸载
    • 尽量不用的资源不加载
    • 尽量将资源打包AssetBundle
    • 尽量使用局部变量
    • 使用对象池
    • 尽量减少垃圾的产生

    CPU

    • 垃圾回收机制 GC:字符串使用 对象的使用 foreach tag值对比--CompareTag()
    • 减少DrawCall:批处理(静态批处理、动态批处理)
    • 将暂时不用的物体设置为非激活状态 (内存换CPU)
    • 代码中减少大量使用CPU
      a、Find的使用
      b、GetComponent():频繁使用(Update 、 Stay 、Drag)
      c、善于使用OnBecomeVisible OnBecomeDisvisible方法
      d、尽量使用内置元素 new Vector3(1,1,1) Vector3.one Color.green
      e、尽量少使用浮点数以及除法

    GPU

    • 减少绘制的项目:
      a、能静态的尽量标注为静态
      b、尽量少用灯光
      c、LOD:层级细节--LODGroup 提高内存的占用 减少GPU的消耗
      d、遮挡剔除:参与遮挡剔除的物体必须设置为OccluderStatic OccludeeStatic;遮挡剔除的烘焙
    • MipMap:优化渲染 提高内存占用
    • 显存优、图片压缩优化:Android--ETC模式 IOS--PVRTC模式
    • 灯光的烘焙

    UI优化

    • 动静分离,任意元素发生变化,Canvas都会重新刷新
    • 事件响应,取消不需要响应事件的UI物体
    • 隐藏UI物体

    对象池

    PoolName:缓存池的唯一名称。

    MatchPoolScale:勾选后实例化的游戏对象的缩放比例将全是1,不勾选择用Prefab默认的。

    MatchPool Layer:勾选后实例化的游戏对象的Layer将用Prefab默认的。

    Don’t Reparent:勾选后实例化的对象将没有父节点,通通在最上层,建议不要勾选。

    Don’t Destroy On Load:切换场景不释放。

    Log Messages 是否打印日志信息

    Pre-Prefab Pool Options :缓存池列表,意思就是缓存列表里面可以放各种类型的Prefab。右边有个 “+”按钮点击就添加每个类型的Prefab了

    prefab:可以直接把工程里的Prefab直接拖进来。

    preloadAmount:缓存池这个Prefab的预加载数量。意思为一开始加载的数量!

    preloadTime:如果勾选表示缓存池所有的gameobject可以“异步”加载。

    preloadFrames:每几帧加载一个。

    preloadDelay:延迟多久开始加载。

    limitInstance:是否开启对象实例化的限制功能。

    limit Amount:限制实例化Prefab的数量,也就是限制缓冲池的数量,它和上面的preloadAmount是有冲突的,如果同时开启则以limitAmout为准。

    limitFIFO:如果我们限制了缓存池里面只能有10个Prefab,如果不勾选它,那么你拿第11个的时候就会返回null。如果勾选它在取第11个的时候他会返回给你前10个里最不常用的那个。

    cullDespawend:是否开启缓存池智能自动清理模式。
    自动清理:就是当池子里面的对象setActive(false)也就是目前不用的时候,poolManager会根据上述参数自动清理这些对象,清理也就是Destroy()掉。而active变为true或false是由Spawn和Despawn方法决定的!

    cull Above:缓存池自动清理,但是始终保留几个对象不清理。

    cull Delay:每过多久执行一遍自动清理,单位是秒。从上一次清理过后开始计时

    cullMaxPerPass:每次自动清理几个游戏对象。

    相关文章

      网友评论

          本文标题:Unity程序优化

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