有時候Unity編輯器6.0在建置Android專案時,會在Compiling shader variants時跑很久,出現類似Shader URP/Lit: preparing variants (2945M/36238M)的訊息,除了會讓電腦變得很緩慢,有時候還會導致電腦當機。
這是因為URP/Lit shader會在編輯時會嘗試許多組合,例如Light、Shadow、Additional Lights、Lightmap、HDR的組合等等。如果你開發URP專案卻同時使用Built-in的shader(如assets store下載的舊套件),會因為URP shader的混用而導致Shader variants 爆炸。
解決方式一之就是將這些Build-in材質轉成URP的材質:
(1) 點選Window>Rendering>Render Pipeline Converter

(2) 勾選Material Shader Converter,然後按底下的Scan按鈕。

(3) 等到掃瞄完專案內的Build-in材質後,點選底下的Convert Assets按鈕。

(4) 按Proceed按鈕後,等它跑完。


(5) 如果你的專案不是URP專案,可以在Project視窗的搜尋欄位搜尋"t:UniversalRenderPipelineAsset"

(6) 開啟Project Settings>Graphics


(7) 將剛才搜尋到的UniversalRenderPipelineAsset.asset拖曳到Default Render Pipeline欄位。點選Confirm按鈕。


(8) 這樣專案就會轉成URP專案,Build-in Shader的材質也會轉成URP Shader的材質。在建置Android專案時就不會卡住了。不過有時有些材質還是會出現粉紅色的渲染錯誤,需要更改材質的Shader。
例如我使用Particle Pack來實現火焰特效,材質的Shader要改成Universal Render Pipeline/Unlit,才能夠在手機正常顯示。






















