Unity优化

一 内存优化

一 大概标准

1. 纹理             40M

2. Mono          30M

3. Animation  20M

4. Mesh          10M

6. Font            10M

7. Audio          5M

8. GfxDriver    25M

9. ResourceManager 视情况而定(跟 你ResourceManager里放了多少文件)

(该标准是我做 MMO 和 FPS时的标准值 不同项目会有不同程度的降低)

内存安全线 android unity在170M左右 pss在260M  (1G内存手机上不会因为内存不足crash)

ios的在280M左右(均指峰值)

二 工具

1. unity Profile

2. Mono提供的内存查看工具 heapshot 需要替换unity自带的dll  查看当前内存对象情况

3. 网易 emmagee性能评测工具 开源 可做自定义 加入当前场景名字

4. IOS 工具不好用

5. 根据unity提供的API 自定义性能Profile工具  带来的损耗较小。

三 注意点

1. 内存基本存在3种问题 1 内存泄露 2 资源冗余 3 Mono无效内存

一 内存泄露 主要是资源管理 注意AssetBundle Asset对象的卸载与缓存。小心处理挂在DonotDestroy的节点下面的东西。小心static变量持有资源问题。所有场景均有一个空场景进入,空场景负责进行堆内存的清空。

保证每次进入空场景的内存是一样的。

二 资源冗余 保证资源不会被带入多个场景,可勤看Profiler即可。注意不要在内存中出现同一份的多份复制。例如 纹理开启了 read/write enable. 调用 material mesh属性而不是 shareMaterial shareMesh属性。动画进行分割。例如场景只需要idle动画,则可以做一个prefrab只有idle动画,无需加载其他动画。

三 Mono无效内存 保证mono峰值不要太高。主要是配置文件加载,序列化。

四 降低内存 纹理是最好的方式。 更改纹理格式,降低纹理尺寸。检查是否有冗余纹理。


2 CPU优化

一 标准

渲染 15ms 左右

脚本 10ms 左右

其他(主要是物理,动画) 8ms   左右

二 评判瓶颈

查看主要通过unity的profile工具。如果瓶颈在GPU上,profile上会有 waitforpresent 占比 或者通过 Adreno屏蔽掉openGl 来查看帧率是否有提升。

然后在看占比最高的一项是什么引起的。进行相对应的优化。

三 常用手段

1. 开启多线程渲染。

2. 减少GC。NGUI是贡献GC大户,可以通过profile进行逐一排查,优化。减少GetComponent AddComponent次数。对象多进行复用。能用struct就用struct(项目推广比较困难)

3. 去掉无用log。

4. 多进行缓存, 减少文件IO次数

5. update函数 最好只在基础层面出现。外围逻辑不要有update 函数,需要也用Invoke 或者自己实现的timer。

6. 减少 skinmesh的数量 尽量用meshRenderer 同屏数过多 通过骨骼序列帧代替skinmesh实现

7. 合并drawcall StaticBatch DymiticBatch

8. 粒子尽量不用 用的话 场景效果大的粒子加入 离屏不渲染

9. 对 粒子加入 lod


3 GPU优化

一。标准

1. DrawCall 控制在 200以下

2. 同屏面数控制在4W面以下

二。评判瓶颈

1. Unity Profile 出现 waitforPresent

2. IOS的 FrameDebugger 可以看到CPU跟GPU分别耗时 同时也能看到某步的具体耗时

3.Adreno 也可给出每次pass消耗的clock数以及传输数量数。

三。常用手段

1. 纹理采用GPU支持格式 尽量减少纹理大小

2. camera的远裁剪面设置近一些

3. 看情况开启遮挡剔除

4. 减少透明片 overdraw在低端机会有很严重的性能问题

5. 减少shader复杂度。利用好 mask通道

6. 降低分辨率

7. 善用欺骗 很多效果可以通过巧妙的办法进行仿制。需要多跟美术沟通https://simonschreibt.de/gat/fallout-3-edges/

8. GPU基本三大瓶颈 1.带宽 2.Vertex  3. Pixel 找出瓶颈分别优化

四。常用工具

1.unity profile 包括5的frameDebugger

2.ios frameDebugger

3. adreno

(PS unity5 android 以后会默认有一次blit,很耗。曾经的想法是通过unity提供的RenderPlugIn 重新绑定原定的fbo 然后在新的fbo替换掉他的shader 移除摄像机,通过剔除给剔除掉解决。但是重新绑定fbo后,unity会检测到更改,在改回来。所以只能hook住opengl,让绑定函数失效。但是没成功.有相同的问题的各位可以一起聊聊。与4.6相比,大概有5~10帧的消耗)


4 包大小优化


未完待续。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 资源内存占用 在一个较为复杂的大中型项目中,资源的内存占用往往占据了总体内存的70%以上。因此,资源使用是否恰当直...
    hcq666阅读 3,305评论 0 51
  • 原文地址:https://unity3d.com/cn/learn/tutorials/temas/perform...
    hellokazhang阅读 4,442评论 0 13
  • 一、内存使用 Q1:在Unity的内存管理机制中, Reserved Total 和 Used Total之间的关...
    hcq666阅读 7,157评论 0 51
  • 文/心甬 中拍协网站的继续教育版块总算是升级完成了,虽然还有同学在群里嚷嚷各种小问题,但是心甬尝试登录试用了下,还...
    心甬阅读 247评论 2 3
  • 减肥系列文章6减肥原理和注意事项 一、减肥的原理 人体摄入的食物经过消化吸收后,变为葡萄糖、氨基酸、甘油进入血液。...
    KTF001阅读 304评论 0 2