Unity 在游戲開發行業中扮演著非常重要的角色。很多游戲都是用Unity開發的,所以在Unity運行的時候,需要合并一些對象,用一張圖來渲染。這就是Batch processing,今天的文章只是想告訴大家Unity中如何處理批處理的靜態和動態問題:
動態批處理
如果動態對象共享相同的材質,Unity 會自動批處理這些對象。
動態批處理是自動完成的,不需要您進行額外的工作。
提示:
1、 批處理動態對象需要每個頂點的開銷,因此動態批處理僅支持少于 900 個頂點的網格。
2、 如果你的著色器使用頂點位置、法線和UV值,那么你只能批處理低于300個頂點的對象;如果您的著色器需要使用頂點位置、法線、UV0、UV1 和切線向量,那么您只能批處理低于 180 個頂點的對象。
3、請注意:屬性數量的限制將來可能會改變。
4、 不要使用比例。兩個具有比例的對象(分別為 1,1,1) 和 (2,2,2)) 不會被批處理。
5、 均勻縮放的對象不會與非均勻縮放的對象進行批處理。
兩個具有尺度 (1,1,1) 和 (1,2,1)) 的對象不會被批處理,而是具有尺度 (1,2,1) 和 (1,3, 1) 兩個對象將能夠被批處理。
6、 不同材質的實例化對象會導致批處理失敗。
7、帶有光照貼圖的對象具有額外的(隱藏的)材質屬性,例如光照貼圖偏移和縮放因子。因此,帶有光照貼圖的對象不會被批處理(除非它們指向光照貼圖的同一部分)。
8、 多通道著色器會妨礙批處理操作。例如,Unity 中幾乎所有的著色器都支持前向渲染中的多個燈光,從而有效地為它們打開了多個通道。
9、預設實例將自動使用相同的網格和材質。
靜態批處理
相比之下,靜態批處理允許引擎批處理任何大小的幾何對象以減少繪制調用(只要對象不移動并且具有相同的材質)。因此,靜態批處理比動態批處理效率更高,您應該盡量少使用它,因為它需要的 CPU 開銷更少。
為了更好地使用靜態批處理,您需要明確指出哪些對象是靜態的,并且在游戲中永遠不會移動、旋轉和縮放。要完成此步驟,您只需在 Inspector 中勾選 Static 復選框。
使用靜態批處理操作需要額外的內存開銷來存儲合并的幾何數據。在靜態批處理之前,如果某些對象共享相同的幾何圖形,引擎將為處于編輯和運行狀態的每個對象創建幾何圖形的副本。這并不總是一個好主意,因為有時,您將不得不犧牲一點渲染性能來防止某些對象的靜態批處理,從而減少內存開銷。例如,將茂密森林中的樹設置為靜態會導致嚴重的內存開銷。
靜態批處理目前僅支持 Unity iOS Advanced。
Unity中如何處理批處理的靜態和動態問題?不同的問題必須以不同的方式處理。如果您對Unity有更多的專業知識需要學習,那么您可以來我們千鋒教育的Unity培訓班實地考察,或咨詢我們了解詳情。更多關于Unity培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。