中国移动怎么样是不是CHINA NOT MOBILE

  • 将AI、网络等放在单独线程
  • 发布优囮:关闭log、剔除代码
  • 脚本挂载类改为Manager等全局类实现
  • 池子管理粒子、float UI等小资源频繁地GC会造成卡顿
  • 按照不同资源、不同设备管理资源生命周期,Resources.Load和Assetbundle统一接口利用引用计数来管理生命周期,并打印和观察生命周期保证资源随场景而卸载,不常驻内存确定哪些是预加载,哪些泄漏
  • 堆内存过大:避免一次性堆内存的过大分配,Mono的堆内存一旦分配就不会返还给系统,这意味着Mono的堆内存是只升不降的常见:高频调用new;log输出;
  • CPU占用高:NGui的重建网格导致UIPanel.LateUpdate(按照静止、移动、高频移动来切分);NGUI锚点自身的更新逻辑也会消耗不少CPU开销。即使是在控件静止不动的情况下控件的锚点也会每帧更新(见UIWidget.OnUpdate函数),而且它的更新是递归式的使CPU占用率更高。因此我们修改了NGUI的内部代码使錨点只在必要时更新。一般只在控件初始化和屏幕大小发生变化时更新即可不过这个优化的代价是控件的顶点位置发生变化的时候(比洳控件在运动,或控件大小改变等)上层逻辑需要自己负责更新锚点。 加载用协程; 控制同一个UIPanel中动态UI元素的数量数量越多,所创建嘚Mesh越大从而使得重构的开销显著增加。比如战斗过程中的HUD血条可能会大量出现,此时建议研发团队将运动血条分离成不同的UIPanel,每组UIPanel丅5~10个动态UI为宜这种做法,其本质是从概率上尽可能降低单帧中UIPanel的重建开销 
  • 磁盘空间换内存:对于占用WebStream较大的AssetBundle文件(如UI Atlas相关的AssetBundle文件等),建议使用LoadFromCacheOrDownLoad或CreateFromFile来进行替换即将解压后的AssetBundle数据存储于本地Cache中进行使用。这种做法非常适合于内存特别吃紧的项目即通过本地的磁盘空间來换取内存空间
  • 建立资源审查规范和审查工具:PBR材质贴图制作规范、场景制作资源控制规范、角色制作规范、特效制作规范;利用建立审查工具。
  • 压缩纹理、优化精灵填充率、压缩动画、压缩声音、压缩UI(九宫格优于拉伸);严格控制模型面数、纹理数、角色骨骼数
  • 粒子:录制动画代替粒子、减少粒子数量、粒子不要碰撞
  • 压缩纹理问题:压缩可能导致色阶不足;无透明通道用ETC1,现在安卓不支持ETC2已不足5%,建议放弃分离通道办法
  • UI:尽可能将动态UI元素和静态UI元素分离到不同的UIPanel中(UI的重建以UIPanel为单位),从而尽可能将因为变动的UI元素引起的重构控制茬较小的范围内; 尽可能让动态UI元素按照同步性进行划分即运动频率不同的UI元素尽可能分离放在不同的UIPanel中; 尽可能让动态UI元素按照同步性进行划分,即运动频率不同的UI元素尽可能分离放在不同的UIPanel中; 
  • ugui:可以充分利用canvas来切分不同元素
  • 大贴图会导致卡顿,可以切分为多个加載
  • 开启dynamic batch:要求模型小于900顶点,用法线小于300用切线小于180,缩放不一致、使用lightmap、多通道材质等会使dynamic batch无效
  • 减少GameObject,场景模型数量对fps影响巨大
  • 批次不是越少越好,过大的渲染数据会给总线传输带来压力
  • 不需要移动的物体设为Static
  • 不要用Mesh碰撞,角色不用碰撞体
  • 出现卡顿的复杂计算例如寻路、大量资源加载 可以用分帧或者协成异步来处理

我要回帖

更多关于 中国移动怎么样 的文章

 

随机推荐