為什麼同一個Camera有兩個RenderSingleCamera的耗時

UWATech發表於2024-10-17

1)為什麼同一個Camera有兩個RenderSingleCamera的耗時
2)Unity 2022中SBP打包報錯問題排查
3)Application.lowMemory在什麼時候會生效
4)一般iOS機型要超過其執行記憶體的多少會容易崩潰


這是第404篇UWA技術知識分享的推送,精選了UWA社群的熱門話題,涵蓋了UWA問答、社群帖子等技術知識點,助力大家更全面地掌握和學習。

UWA社群主頁:community.uwa4d.com
UWA QQ群:793972859

Rendering

Q:我們發現專案裡有對同一個Camera的兩個RenderSingleCamera的耗時,這是合理的嗎?且全程RenderPipelineManager.DoRenderLoop_Internal這個函式每幀會執行2次還有可能執行4次的。

因此有以下疑惑:
1. RenderPipelineManager.DoRenderLoop_Internal什麼情況下可能每幀執行多次?
2. 兩個耗時有何區別
我在RenderDoc裡也抓了下幀,確實有重複的Colour Pass,看起來明明已經畫了一遍了,然後又畫了一遍,Unity的FrameDebug只能看到一次。

A:RenderLoop在堆疊裡面看到執行多次的情況通常是有Camera設定了RT作為其RenderTarget。

這兩個是URP執行的兩個階段,前面可以看做初始化和Culling階段,後面是提交Drawcall的階段,以前在Built-in管線,前面的各種邏輯都是寫在Native層的,URP把這個階段封裝了C#,方便開發者自己管理。

針對以上問題,有經驗的朋友歡迎轉至社群交流:
https://answer.uwa4d.com/question/66f8cf8f682c7e5cd61bf8e8


AssetBundle

Q:Unity 2022使用SBP打包總是報錯:Assertion failed on expression: 'info.preloadSize == loadInfo.includedObjects.s。

環境:
Unity 2022.3.30f1
SBP 2.01、SBP 2.1.4,使用CompatibilityBuildPipeline打包

問題:
打沒有快取的資源,很容易出報錯:

Assertion failed on expression: 'info.preloadSize == loadInfo.includedObjects.size() + loadInfo.referencedObjects.size()'

UnityEditor.Build.Pipeline.CompatibilityBuildPipeline:BuildAssetBundles (string,UnityEditor.AssetBundleBuild[],UnityEditor.BuildAssetBundleOptions,UnityEditor.BuildTarget)

A:結論:同一個包裡不允許資源重名(我們所在的版本里資源記錄沒有路徑也沒有擴充名)。

下面放兩張對比圖,跟問題到底錯在哪裡無關,只是說明下二者的差別。

我嘗試透過解包的內容確定出錯的根本原因或者表現,但是沒有成功。只在中間某個環節推測是重名問題,並進行了一系列測試,確認了這個結論。

為什麼同一個Camera有兩個RenderSingleCamera的耗時

2022裡有問題的內容列表

為什麼同一個Camera有兩個RenderSingleCamera的耗時

2018里正常的內容列表

感謝題主Walker@UWA問答社群提供了回答


Memory

Q:Application.lowMemory這個方法大家有測過嗎?如何生效?

A:由於Application.lowMemory僅在記憶體極其緊張時觸發,因此不應該過度依賴這個回撥來管理記憶體,尤其可能比較常見但其實有問題的、在回撥中呼叫RUUA回收Unused資源的做法,不但降低記憶體的效果有限還會觸發卡頓。正確的做法是透過最佳化資源管理、減少不必要的記憶體佔用等方式來預防記憶體問題;或呼叫Resources.UnloadAssets或AB.Unload(True)的方式定向解除安裝記憶體。

針對以上問題,有經驗的朋友歡迎轉至社群交流:
https://answer.uwa4d.com/question/66f8cd1a682c7e5cd61bf8e6


Memory

Q:想問下,大家有沒有測過iOS機型一般超過其執行記憶體的多少(比如50%)容易崩潰的資料嗎?

A:我們專案測試過,但是有一些專案組反饋證明,即便是4G以上的中高階iOS裝置,在記憶體超過1.8GB時閃退風險會比較高。

針對以上問題,有經驗的朋友歡迎轉至社群交流:
https://answer.uwa4d.com/question/66f8ce43682c7e5cd61bf8e7

封面圖來源於網路


今天的分享就到這裡。生有涯而知無涯,在漫漫的開發週期中,我們遇到的問題只是冰山一角,UWA社群願伴你同行,一起探索分享。歡迎更多的開發者加入UWA社群。

UWA官網:www.uwa4d.com
UWA社群:community.uwa4d.com
UWA學堂:edu.uwa4d.com
官方技術QQ群:793972859

相關文章