Unity在游戲開發行業起到的作用是非常大的,很多的游戲就是使用unity開發出來的,那么在unity在運行的時候是需要把一些物體進行合并的,從而用一個繪制來渲染他們,這個就是批處理了,今天粵嵌科技的這篇文章就是想和大家說在unity中批處理靜態和動態的問題要怎么解決:
動態批處理
如果動態物體共用著相同的材質,那么Unity會自動對這些物體進行批處理。
動態批處理操作是自動完成的,并不需要你進行額外的操作。
Tips:
提醒:
1、 批處理動態物體需要在每個頂點上進行一定的開銷,所以動態批處理僅支持小于900頂點的網格物體。
2、 如果你的著色器使用頂點位置,法線和UV值三種屬性,那么你只能批處理300頂點以下的物體;如果你的著色器需要使用頂點位置,法線,UV0,UV1和切向量,那你只能批處理180頂點以下的物體。
3、請注意:屬性數量的限制可能會在將來進行改變。
4、 不要使用縮放尺度(scale)。分別擁有縮放尺度(1,1,1)和(2,2,2)的兩個物體將不會進行批處理。
5、 統一縮放尺度的物體不會與非統一縮放尺度的物體進行批處理。
使用縮放尺度(1,1,1)和 (1,2,1)的兩個物體將不會進行批處理,但是使用縮放尺度(1,2,1)和(1,3,1)的兩個物體將可以進行批處理。
6、 使用不同材質的實例化物體(instance)將會導致批處理失敗。
7、擁有lightmap的物體含有額外(隱藏)的材質屬性,比如:lightmap的偏移和縮放系數等。所以,擁有lightmap的物體將不會進行批處理(除非他們指向lightmap的同一部分)。
8、 多通道的shader會妨礙批處理操作。比如,幾乎unity中所有的著色器在前向渲染中都支持多個光源,并為它們有效地開辟多個通道。
9、預設體的實例會自動地使用相同的網格模型和材質。
靜態批處理
相對而言,靜態批處理操作允許引擎對任意大小的幾何物體進行批處理操作來降低繪制調用(只要這些物體不移動,并且擁有相同的材質)。因此,靜態批處理比動態批處理更加有效,你應該盡量低使用它,因為它需要更少的CPU開銷。
為了更好地使用靜態批處理,你需要明確指出哪些物體是靜止的,并且在游戲中永遠不會移動、旋轉和縮放。想完成這一步,你只需要在檢測器(Inspector)中將Static復選框打勾即可,如下圖所示:
使用靜態批處理操作需要額外的內存開銷來儲存合并后的幾何數據。在靜態批處理之前,如果一些物體共用了同樣的幾何數據,那么引擎會在編輯以及運行狀態對每個物體創建一個幾何數據的備份。這并不總是一個好的想法,因為有時候,你將不得不犧牲一點渲染性能來防止一些物體的靜態批處理,從而保持較少的內存開銷。比如,將濃密森里中樹設為Static,會導致嚴重的內存開銷。
靜態批處理目前只支持Unity iOS Advanced。
不同的問題肯定是有不同的處理方式的,如果說你對于unity上有更多的專業上的知識需要去學習的話,那么可以來我們粵嵌科技的unity培訓班進行實地考察,也可以點擊我們文章下面的獲取試聽資格按鈕來獲取我們的unity課程免費試聽資格,在試聽中可以更加深入的了解粵嵌科技。