[RS] Unity問題記錄

環(huán)境

  • Unity 2020.3.2f1

記錄

1、發(fā)布APK后,場景霧效丟失

Project Graphics Settings

Unity默認設置是Automatic:引擎自己剔除一些Shader變體。
我這里的霧效就被剔除了,將Mode改為Custom,勾上需要的模式可解決。
不清楚用了哪種模式,就打開場景,點Input From Current Scene


2、Editor下Mono內存爆炸

Mono占用

觸發(fā)操作如下:

  • 打開Animator編輯窗口(里面顯示動畫狀態(tài)機)
  • Hierarchy里選中一個粒子節(jié)點,有Particle System組件即可

我這邊測試時,每兩幀會有84K的內存分配,下班掛了一宿直接系統(tǒng)內存耗盡重啟?。?/p>

Crash Log
內存分析1
內存分析2

經過一天的反編看代碼+內存分析,最終基本確定:
C#到C++傳遞委托導致的內存泄露,委托對象是WindowFunction

內存分析的工具是 Heap Explorer,實際用下來感覺比Unity自己的Memory Profiler要好用一些

解決

底層問題,沒啥解決方案,只能給Unity提Bug了。
測試了下2018正常,2020(2020.3.21f1)、2021(2021.2.0f1)兩個大版本全淪陷。


3、InitializeOnLoad加載不到ScriptableObject配置

??我們項目里,重新導入項目或切分支后(偶現(xiàn)),會出現(xiàn)加載不到AB包配置的問題。配置是一個ScriptableObject的Asset,并且在InitializeOnLoad的時候進行加載,保證每次運行使用的都是最新的。

背景知識

新工程 (無Library) Unity資源、代碼導入流程[流程來源于Editor.log]:

  1. Refreshing native plugins compatible for Editor
    Native插件的編譯
  2. Begin MonoManager ReloadAssembly
    重新加載Unity內部的程序集
  3. Application.AssetDatabase Initial Script Refresh Start
    將代碼、程序集做完資源導入
  4. [ScriptCompilation] Recompiling all scripts
    重新編譯所有代碼
  5. 執(zhí)行InitializeOnLoad標記的代碼
  6. Application.AssetDatabase Initial Script Refresh End
  7. Application.AssetDatabase.Refresh Start
    導入各種Unity資源
  8. Application.AssetDatabase.Refresh End
  9. 執(zhí)行(batchmode)命令行調用的方法

??從上面的流程可以看出,項目第一次導入一定會出問題,因為Unity是先執(zhí)行InitializeOnLoad,然后才去導入資源。

解決方案

??我們只需要在正常Editor運行的時候,才用InitializeOnLoad加載Asset,因此可以通過 EditorApplication.delayCall 延遲執(zhí)行來規(guī)避順序問題

EditorApplication.delayCall 在batchmode的命令行環(huán)境下不會執(zhí)行


4、Editor下使用模擬模式加載資源,即使有預加載也會出現(xiàn)卡頓

原因

??使用AssetDatabase.Load加載Prefab,它依賴的Texture等資源,是在第一次渲染的時候才會加載進內存。所以,預加載幾乎無效!??!


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一:什么是協(xié)同程序? 答:在主線程運行時同時開啟另一段邏輯處理,來協(xié)助當前程序的執(zhí)行。換句話說,開啟協(xié)程就是開啟一...
    好怕怕閱讀 4,031評論 2 23
  • 本文首發(fā)于洪流學堂微信公眾號。 洪流學堂,學Unity快人幾步 Unity2018.3已經正式發(fā)布,快來看看有什么...
    洪智閱讀 8,691評論 0 7
  • 1、時間凍結遇上卡頓,戰(zhàn)斗表現(xiàn)與邏輯脫節(jié) 1.1 做法設定 時間凍結:Time.timeScale = 0 凍結與...
    _Walker__閱讀 253評論 0 0
  • 1、基礎知識: 標題欄 菜單欄 工具欄:變換工具、gizmos切換、播放控件、層列表、布局列表 功能窗口 2、資源...
    小小小小小丶敏閱讀 647評論 0 1
  • 1、基礎知識: 標題欄 菜單欄 工具欄:變換工具、gizmos切換、播放控件、層列表、布局列表 功能窗口 2、資源...
    夕望有你閱讀 930評論 0 2

友情鏈接更多精彩內容