AssetBundle包加載的場景會變暗

1)AssetBundle包加載的場景會變暗
2)關於URP的合批問題
3)兩次生成的AssetBundle包不一致
4)如何徹底卸載AssetBundle佔用的內存
5)renderFrameInterval >1 導致半透明錯誤的額外疊加


這是第201篇UWA技術知識分享的推送。今天我們繼續爲大家精選了若干和開發、優化相關的問題,建議閱讀時間10分鐘,認真讀完必有收穫。

UWA 問答社區:answer.uwa4d.com
UWA QQ羣2:793972859(原羣已滿員)

AssetBundle

Q:我發現在項目工程下加載場景AssetBundle包會變暗,但是在打包工程和空工程下加載是正常的,不知道有沒有人遇到過這個問題呢?

 

 

 

 

 

A:原因是ColorSpace不一致,我突然想到曾經看到過Gamma和Liner不一致的問題,試了下發現能夠解決這裏的問題,所以只要改成Gamma就行了。

感謝題主WindowsXPC@UWA問答社區提供了回答,歡迎大家轉至社區交流:
https://answer.uwa4d.com/question/5e9e76e1979400061e545049


Rendering

Q:這幾天在嘗試使用URP,使用的渲染流程是3個Pass,第一個使用URP默認Pass渲染角色,第二個通過Renderer Features進行Stencil的Mask,第三個Pass同樣使用Renderer Features進行Outline勾邊。

第一個Pass因爲使用ShaderGraph做的,因此是URP Batcher Compatible。第二第三個自己寫的Shader,開始是不兼容的。但是目前已經改成了URP Batcher Compatible。

所有的材質都開啓了Instance。首先從最後渲染效果達到目標,沒有問題。但是觀察合批數據,覺得有點疑惑:

Statistics內顯示Batches有30個,Saved by batching:-27

但是從Frame Debugger觀察,角色渲染的3個Pass都進行了SRP Batch,一共16個批次。

而Profile裏面顯示的和Statistics基本一致。

這兒的差異要怎麼理解呢?

A1:看了以下鏈接,基本已經理解這兒的差異了。實際SRP的Batch並不是真的去減少Draw Call,所以數據有差異的。
https://blogs.unity3d.com/2019/02/28/srp-batcher-speed-up-your-rendering/
感謝題主黃程@UWA問答社區提供了回答

A2:這個現象應該還是屬於Profiler和FrameDebuger的顯示不統一的問題。
像Static Batching實際上也是如題主所說“並不是真的去減少Draw Call”,即GL層的glDraw數變化不大,但Profiler中的Batch數是大幅下降的;而SRP的Batch功能還比較新,所以估計還沒把SRP的Batch和Profiler中的Batch統一起來。

該回答由UWA提供,歡迎大家轉至社區交流:
https://answer.uwa4d.com/question/5ea157f94d93790618e0eba2


AssetBundle

Q:在對Prefab進行打包時發現,前後兩次打包,Prefab和所引用的資源都沒有變化,生成的AssetBundle包中間卻有幾個數據不一致,導致計算出的MD5值不一樣。

對比Manifest文件,確認Dependencies所依賴的AssetBundle包沒有變化, 只是順序發生了變化。所以是什麼原因導致兩次出包會有差異呢?

 

 

A: 這是Unity引擎自己的特性,從4.x版本到現在一直都存在這種情況。所以,非常建議使用引擎自己提供的Hash值代替MD5來做爲AssetBundle是否改變的判斷。

該回答由UWA提供,歡迎大家轉至社區交流:
https://answer.uwa4d.com/question/5e902ead8cabe84a011afc72


AssetBundle

Q:我使用DownloadHandlerAssetBundle.GetContent()獲取AssetBundle,會增加內存,但是使用assetbundle.Unload(true),好像並不能徹底卸載內存,或許已經徹底卸載了AssetBundle佔用的內存,但是還有一部分沒有被卸載。是不是DownloadHandlerAssetBundle.GetContent()這個函數的原因呢?

A: 使用Unity 2018.4.14f1打包exe測試,和這個問題是一樣的。

如果aa依賴於bb,先加載bb再加載aa,可以徹底卸載;先加載aa再加載bb,就無法完全卸載;只加載aa也卸載不徹底。另外,前面的測試結果與卸載順序無關。

感謝Xuan@UWA問答社區提供了回答,歡迎大家轉至社區交流:
https://answer.uwa4d.com/question/5e99500ecd6a9b49fb4a4711


Rendering

Q:關於OnDemandRendering.renderFrameInterval的疑問。

在一些靜態UI的時候把OnDemandRendering.renderFrameInterval設置爲3,表示渲染頻率降爲1/3。假設正常是30fps,那麼渲染幀率就是10fps。但是在iOS手機上測試後發現一個問題,畫面表現爲透明的UI在一層層地疊加。

可以看到,箭頭的陰影很深,而實際上是很淡的一層陰影。由於渲染幀率降爲30fps的1/3,所以每10幀clear一下,陰影並沒有疊得很過分。如果把渲染幀設得更低,會看到陰影一層層疊加。

請問下,這是Bug嗎?還是有另外的設置?

A: 應該是Bug,Issue ID:1214921, Fixed in 2020.2.0a6,可查看Bug提交

感謝Xuan@UWA問答社區提供了回答,歡迎大家轉至社區交流:
https://answer.uwa4d.com/question/5ea10d084d93790618e0eba0


今天的分享就到這裏。當然,生有涯而知無涯。在漫漫的開發週期中,您看到的這些問題也許都只是冰山一角,我們早已在UWA問答網站上準備了更多的技術話題等你一起來探索和分享。歡迎熱愛進步的你加入,也許你的方法恰能解別人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官網:www.uwa4d.com
官方技術博客:blog.uwa4d.com
官方問答社區:answer.uwa4d.com
UWA學堂:edu.uwa4d.com
官方技術QQ羣:793972859(原羣已滿員)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章