Unity性能优化分析思路

1)Unity性能优化分析思路

2)Unity2020后Paticle子节点旋转并把ScalingMode设置为Hierarchy后,对根节点进行缩放时表现不正常

3)FBX默认会冗余lit.mat、lit.shader如何解决

4)部分手机(小米12)运行时不时闪退问题


这是第294篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com

UWA QQ群2:793972859(原群已满员)

Unity

Q:Unity有多少优化点?比如合批:静态合批、SRP合批、GPU实例化、UGUI Reruild、光照烘焙、反射探针、光照探针、Shader.Parse、Shader.CreateGPUProgram、场景加载优化和GC优化,还有哪些优化点?

A1:大方向上可以从CPU、内存、GPU这三个方向切入。

细分一下可以从CPU、内存、渲染、资源优化、耗电优化、网络优化、卡顿优化、优化工具的选择掌握这几个点入手。

一、CPU优化

1. 缓存计算结果

2. 预处理

3. 限帧法

4. 主次法

5. 多线程

6. 引擎模块(动画、物理、粒子、导航)

7. 逻辑优化

二、内存优化

1. 缓存法

2. 内存池

3. 资源管理器

4. 控制GC

5. 逻辑优化

6. Shader变体数量优化

三、渲染优化

1. SetPassCall渲染状态切换频次控制

2. DrawCall数量控制

3. 带宽负载

4. 显存占用

5. GPU计算量

四、卡顿优化

1. 降帧法

2. 摊帧法

3. 限制数量法

4. 逻辑优化

5. IO优化

6. 使用进度条

五、资源优化

1. 纹理优化

2. UI优化

3. 字体优化

4. 模型优化

5. 场景优化

6. 粒子优化

7. 材质优化

8. 指定标准美术规范

9. Shader变体数量优化

六、耗电优化

上面说到的优化点,或多或少都会影响到手机的耗电,也是优化耗电的措施,除此之外还有:

1. 动态调整限帧

2. 动态调整画质

七、网络优化

1. 减少无用字段

2. 降低字段精度

3. 避免重复发送

4. 网络异步化

5. 压缩无效字节

6. 压缩协议包

以上说的这些要点,大部分摘抄归纳自《移动游戏性能优化通用技法》。强烈建议多花些时间认真阅读一下这篇文章,然后以这篇文章作为指南,再去仔细研究里面提到的优化细节该如何展开。

感谢马三小伙儿@UWA问答社区提供了回答

A2:优化点肯定是无穷无尽的,这里搬运UWA的客户端性能优化思路,针对常见的引擎模块的相关问题都做了分析,讲的是比较全比较透的,常见的优化难题都罗列了。

《Unity性能优化 — 物理模块》

《Unity性能优化 — 动画模块》

《Unity性能优化系列 — 资源内存泄漏》

《Unity性能优化系列—Lua代码优化》

《粒子系统优化——如何优化你的技能特效》

《Unity性能优化系列—加载与资源管理》

《Unity性能优化系列—渲染模块》

《Unity性能优化 — UI模块》

《支持资源加载分析、场景分割》

《UWA报告使用小技巧,你get了吗?》

《UWA本地资源检测更新,助你严守项目性能的每个角落!》

感谢芭妮妮@UWA问答社区提供了回答

ParticleSystem

Q:Unity 2020后Paticle子节点旋转并把ScalingMode设置为Hierarchy后,对根节点进行缩放时表现不正常。

在2019及其之前的版本没有这个问题。升级到2020后出现。

子节点的旋转会改变对应的缩放轴,如果x轴旋转了-90度,那么根节点缩放y轴就等于缩放了z轴。

具体见下图:



A:已找到对应官方答复:

《particle-system-behavior-changes-when-it-is-rotated-or-scaled-in-negative-axis》

2018.3b版本后不建议对Billboard节点使用旋转和非统一缩放。

感谢jiacat@UWA问答社区提供了回答

Material

Q:打AssetBundle包发现会包含lit.mat、lit.shader,原因是FBX默认自带的,有尝试下面方法:

1. 代码设置 renderer.sharedMaterials = new Material[] ,但是下次再打开Unity或Reimport,又变回lit。

2. 监听文件变化,发现是FBX的同上操作,但是这个在打AssetBundle包时又报一些莫名其妙的错误。

请问大家都是怎么处理的?

A1:两种方式解决这个问题:

一种是美术在出资源时直接不导出材质资源。

一种是自己在Unity导入资源进程里写个批处理,在导出时默认去除掉这材质球。

不管用哪种,都需要导入后,自己在资源上做好策略管理,手动的整理好材质与Shader的目录,跟打包的策略对应。这样可以更好地做好项目规范,还能为后期资源冗余的问题做优化。前期能做好这个规范,后期关于资源冗余的问题也不会太头疼。

感谢廖武兴@UWA问答社区提供了回答

A2:在2020.3.17里面有效,不论是ReImport FBX还是重启Unity,都是有用的:

材质球会变成下面这样:

感谢Xuan@UWA问答社区提供了回答

Memory

Q:目前只出现在小米12手机,Android系统 12,小米系统13.0.16.0。运行后10-20分钟左右就时不时闪退。

Unity版本 2019.4.3f1 L2cpp

E/Unity: Using memoryadresses from more than 16GB of memory

(Filename: /Users/builduser/buildslave/unity/build/Runtime/Allocator/UnityDefaultAllocator.cpp Line: 120)

bool UnityDefaultAllocator::AllocationPage<(RequestType)0>(void const*) const+268) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

UnityDefaultAllocator::RegisterAllocation(void const*)+148) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

UnityDefaultAllocator::Allocate(unsigned long, int)+64) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

MemoryManager::Allocate(unsigned long, unsigned long, MemLabelId const&, AllocateOptions, char const*, int)+308) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

QueueAllocator::QueueAllocator(unsigned int, MemLabelId)+60) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

AsyncUploadManager::ScheduleAsyncRead(AtomicNode*)+280) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

AsyncUploadManager::ScheduleAsyncCommand(AtomicNode*)+48) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

AsyncUploadManager::ScheduleAsyncCommandsInternal()+56) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

AsyncUploadManager::ScheduleAsyncCommands()+56) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

AsyncUploadManager::AsyncResourceUpload(GfxDevice&, int, AsyncUploadManagerSettings const&)+416) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

GfxDeviceWorker::RunCommand(ThreadedStreamBuffer&)+26744) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

GfxDeviceWorker::RunExt(ThreadedStreamBuffer&)+44) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

GfxDeviceWorker::Run()+136) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

GfxDeviceWorker::RunGfxDeviceWorker(void*)+4) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

Thread::RunThreadWrapper(void*)+512) (BuildId: d0b079d6aac2d769613621db6d01af8abf84a793)

A1:Unity发行日志说2019.4.15修复了这个问题,我们升级完之后基本不闪退,但是在vivo的安卓12手机上还是有问题,然后又升级到2019.4.34,目前没看到闪退。

感谢大秋衣@UWA问答社区提供了回答

A2:可参考:

https://issuetracker.unity3d.com/issues/android-il2cpp-empty-project-crashes-on-launch-with-using-memoryadresses-from-more-than-16gb-of-memory-messages

感谢Arboo@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859(原群已满员)

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

推荐阅读更多精彩内容