Unity性能優(yōu)化分析思路

1)Unity性能優(yōu)化分析思路

2)Unity2020后Paticle子節(jié)點(diǎn)旋轉(zhuǎn)并把ScalingMode設(shè)置為Hierarchy后,對(duì)根節(jié)點(diǎn)進(jìn)行縮放時(shí)表現(xiàn)不正常

3)FBX默認(rèn)會(huì)冗余l(xiāng)it.mat、lit.shader如何解決

4)部分手機(jī)(小米12)運(yùn)行時(shí)不時(shí)閃退問題


這是第294篇UWA技術(shù)知識(shí)分享的推送侯谁。今天我們繼續(xù)為大家精選了若干和開發(fā)、優(yōu)化相關(guān)的問題章钾,建議閱讀時(shí)間10分鐘墙贱,認(rèn)真讀完必有收獲。

UWA 問答社區(qū):answer.uwa4d.com

UWA QQ群2:793972859(原群已滿員)

Unity

Q:Unity有多少優(yōu)化點(diǎn)贱傀?比如合批:靜態(tài)合批惨撇、SRP合批、GPU實(shí)例化府寒、UGUI Reruild魁衙、光照烘焙、反射探針株搔、光照探針剖淀、Shader.Parse、Shader.CreateGPUProgram纤房、場(chǎng)景加載優(yōu)化和GC優(yōu)化纵隔,還有哪些優(yōu)化點(diǎn)?

A1:大方向上可以從CPU炮姨、內(nèi)存捌刮、GPU這三個(gè)方向切入。

細(xì)分一下可以從CPU舒岸、內(nèi)存绅作、渲染、資源優(yōu)化蛾派、耗電優(yōu)化俄认、網(wǎng)絡(luò)優(yōu)化堕扶、卡頓優(yōu)化、優(yōu)化工具的選擇掌握這幾個(gè)點(diǎn)入手梭依。

一稍算、CPU優(yōu)化

1. 緩存計(jì)算結(jié)果

2. 預(yù)處理

3. 限幀法

4. 主次法

5. 多線程

6. 引擎模塊(動(dòng)畫、物理役拴、粒子糊探、導(dǎo)航)

7. 邏輯優(yōu)化

二、內(nèi)存優(yōu)化

1. 緩存法

2. 內(nèi)存池

3. 資源管理器

4. 控制GC

5. 邏輯優(yōu)化

6. Shader變體數(shù)量?jī)?yōu)化

三河闰、渲染優(yōu)化

1. SetPassCall渲染狀態(tài)切換頻次控制

2. DrawCall數(shù)量控制

3. 帶寬負(fù)載

4. 顯存占用

5. GPU計(jì)算量

四科平、卡頓優(yōu)化

1. 降幀法

2. 攤幀法

3. 限制數(shù)量法

4. 邏輯優(yōu)化

5. IO優(yōu)化

6. 使用進(jìn)度條

五、資源優(yōu)化

1. 紋理優(yōu)化

2. UI優(yōu)化

3. 字體優(yōu)化

4. 模型優(yōu)化

5. 場(chǎng)景優(yōu)化

6. 粒子優(yōu)化

7. 材質(zhì)優(yōu)化

8. 指定標(biāo)準(zhǔn)美術(shù)規(guī)范

9. Shader變體數(shù)量?jī)?yōu)化

六姜性、耗電優(yōu)化

上面說到的優(yōu)化點(diǎn)瞪慧,或多或少都會(huì)影響到手機(jī)的耗電,也是優(yōu)化耗電的措施部念,除此之外還有:

1. 動(dòng)態(tài)調(diào)整限幀

2. 動(dòng)態(tài)調(diào)整畫質(zhì)

七弃酌、網(wǎng)絡(luò)優(yōu)化

1. 減少無用字段

2. 降低字段精度

3. 避免重復(fù)發(fā)送

4. 網(wǎng)絡(luò)異步化

5. 壓縮無效字節(jié)

6. 壓縮協(xié)議包

以上說的這些要點(diǎn),大部分摘抄歸納自《移動(dòng)游戲性能優(yōu)化通用技法》儡炼。強(qiáng)烈建議多花些時(shí)間認(rèn)真閱讀一下這篇文章妓湘,然后以這篇文章作為指南,再去仔細(xì)研究里面提到的優(yōu)化細(xì)節(jié)該如何展開乌询。

感謝馬三小伙兒@UWA問答社區(qū)提供了回答

A2:優(yōu)化點(diǎn)肯定是無窮無盡的榜贴,這里搬運(yùn)UWA的客戶端性能優(yōu)化思路,針對(duì)常見的引擎模塊的相關(guān)問題都做了分析妹田,講的是比較全比較透的唬党,常見的優(yōu)化難題都羅列了。

《Unity性能優(yōu)化 — 物理模塊》

《Unity性能優(yōu)化 — 動(dòng)畫模塊》

《Unity性能優(yōu)化系列 — 資源內(nèi)存泄漏》

《Unity性能優(yōu)化系列—Lua代碼優(yōu)化》

《粒子系統(tǒng)優(yōu)化——如何優(yōu)化你的技能特效》

《Unity性能優(yōu)化系列—加載與資源管理》

《Unity性能優(yōu)化系列—渲染模塊》

《Unity性能優(yōu)化 — UI模塊》

《支持資源加載分析鬼佣、場(chǎng)景分割》

《UWA報(bào)告使用小技巧驶拱,你get了嗎?》

《UWA本地資源檢測(cè)更新沮趣,助你嚴(yán)守項(xiàng)目性能的每個(gè)角落屯烦!》

感謝芭妮妮@UWA問答社區(qū)提供了回答

ParticleSystem

Q:Unity 2020后Paticle子節(jié)點(diǎn)旋轉(zhuǎn)并把ScalingMode設(shè)置為Hierarchy后,對(duì)根節(jié)點(diǎn)進(jìn)行縮放時(shí)表現(xiàn)不正常房铭。

在2019及其之前的版本沒有這個(gè)問題驻龟。升級(jí)到2020后出現(xiàn)。

子節(jié)點(diǎn)的旋轉(zhuǎn)會(huì)改變對(duì)應(yīng)的縮放軸缸匪,如果x軸旋轉(zhuǎn)了-90度翁狐,那么根節(jié)點(diǎn)縮放y軸就等于縮放了z軸。

具體見下圖:



A:已找到對(duì)應(yīng)官方答復(fù):

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

2018.3b版本后不建議對(duì)Billboard節(jié)點(diǎn)使用旋轉(zhuǎn)和非統(tǒng)一縮放凌蔬。

感謝jiacat@UWA問答社區(qū)提供了回答

Material

Q:打AssetBundle包發(fā)現(xiàn)會(huì)包含lit.mat露懒、lit.shader闯冷,原因是FBX默認(rèn)自帶的,有嘗試下面方法:

1. 代碼設(shè)置 renderer.sharedMaterials = new Material[] 懈词,但是下次再打開Unity或Reimport蛇耀,又變回lit。

2. 監(jiān)聽文件變化坎弯,發(fā)現(xiàn)是FBX的同上操作纺涤,但是這個(gè)在打AssetBundle包時(shí)又報(bào)一些莫名其妙的錯(cuò)誤。

請(qǐng)問大家都是怎么處理的抠忘?

A1:兩種方式解決這個(gè)問題:

一種是美術(shù)在出資源時(shí)直接不導(dǎo)出材質(zhì)資源撩炊。

一種是自己在Unity導(dǎo)入資源進(jìn)程里寫個(gè)批處理,在導(dǎo)出時(shí)默認(rèn)去除掉這材質(zhì)球崎脉。

不管用哪種拧咳,都需要導(dǎo)入后,自己在資源上做好策略管理囚灼,手動(dòng)的整理好材質(zhì)與Shader的目錄骆膝,跟打包的策略對(duì)應(yīng)。這樣可以更好地做好項(xiàng)目規(guī)范啦撮,還能為后期資源冗余的問題做優(yōu)化谭网。前期能做好這個(gè)規(guī)范,后期關(guān)于資源冗余的問題也不會(huì)太頭疼赃春。

感謝廖武興@UWA問答社區(qū)提供了回答

A2:在2020.3.17里面有效,不論是ReImport FBX還是重啟Unity劫乱,都是有用的:

材質(zhì)球會(huì)變成下面這樣:

感謝Xuan@UWA問答社區(qū)提供了回答

Memory

Q:目前只出現(xiàn)在小米12手機(jī)织中,Android系統(tǒng) 12,小米系統(tǒng)13.0.16.0衷戈。運(yùn)行后10-20分鐘左右就時(shí)不時(shí)閃退狭吼。

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發(fā)行日志說2019.4.15修復(fù)了這個(gè)問題,我們升級(jí)完之后基本不閃退殖妇,但是在vivo的安卓12手機(jī)上還是有問題刁笙,然后又升級(jí)到2019.4.34,目前沒看到閃退谦趣。

感謝大秋衣@UWA問答社區(qū)提供了回答

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問答社區(qū)提供了回答

封面圖來源于網(wǎng)絡(luò)


今天的分享就到這里疲吸。當(dāng)然,生有涯而知無涯前鹅。在漫漫的開發(fā)周期中摘悴,您看到的這些問題也許都只是冰山一角,我們?cè)缫言赨WA問答網(wǎng)站上準(zhǔn)備了更多的技術(shù)話題等你一起來探索和分享舰绘。歡迎熱愛進(jìn)步的你加入蹂喻,也許你的方法恰能解別人的燃眉之急葱椭;而他山之“石”,也能攻你之“玉”口四。

官網(wǎng):www.uwa4d.com

官方技術(shù)博客:blog.uwa4d.com

官方問答社區(qū):answer.uwa4d.com

UWA學(xué)堂:edu.uwa4d.com

官方技術(shù)QQ群:793972859(原群已滿員)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末孵运,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔓彩,更是在濱河造成了極大的恐慌掐松,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粪小,死亡現(xiàn)場(chǎng)離奇詭異大磺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)探膊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門杠愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逞壁,你說我怎么就攤上這事流济。” “怎么了腌闯?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵绳瘟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我姿骏,道長(zhǎng)糖声,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任分瘦,我火速辦了婚禮蘸泻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘲玫。我一直安慰自己悦施,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布去团。 她就那樣靜靜地躺著抡诞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪土陪。 梳的紋絲不亂的頭發(fā)上昼汗,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音旺坠,去河邊找鬼乔遮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛取刃,可吹牛的內(nèi)容都是我干的蹋肮。 我是一名探鬼主播出刷,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼坯辩!你這毒婦竟也來了馁龟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤漆魔,失蹤者是張志新(化名)和其女友劉穎坷檩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體改抡,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矢炼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阿纤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片句灌。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖欠拾,靈堂內(nèi)的尸體忽然破棺而出胰锌,到底是詐尸還是另有隱情,我是刑警寧澤藐窄,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布资昧,位于F島的核電站,受9級(jí)特大地震影響荆忍,放射性物質(zhì)發(fā)生泄漏格带。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一东揣、第九天 我趴在偏房一處隱蔽的房頂上張望践惑。 院中可真熱鬧,春花似錦嘶卧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至专甩,卻和暖如春钟鸵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涤躲。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工棺耍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人种樱。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓蒙袍,卻偏偏與公主長(zhǎng)得像俊卤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子害幅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容