我在遊戲中擁有2500 x 2500個單位大小的地形,地形表面上有150 000個沒有碰撞體,物理,陰影或任何物體的小岩石。他們永遠不會動他們坐在那裏。我是否會因設置這些岩石而受益匪淺?或者我還可以做其他事情來做出表演,但保持岩石。我已經將岩石的剔除距離設置爲125.我正在將FPS打印到UI文本以檢查移動設備上的性能。在移動我的FPS是60有或沒有岩石,但在個人電腦上我得到40 FPS沒有岩石和30 FPS與岩石。Unity中應該將15萬個小石頭設置爲靜態嗎?
1
A
回答
4
作爲最低限度你應該確保你的對象資格batching。
Static是一種可以幫助您實現這一目標的方法。但我猜你沒有在編輯器中手動放置150 000個對象,所以你不會從靜態給出的編輯器優化中受益。
但是,您可以將對象置於父級之下並調用StaticBatchingUtility.Combine。你只需要調用一次,畢竟放置了15萬個對象。
更進一步,我可以嘗試將多個岩石放入一個對象,例如combining meshes。然後重新使用這些對象中的一個或多個來驗證批次並獲得更高的FPS。每個物體可以包含多個微小的岩石,您可以隨機對它們進行分層以實現隨機觀察。請注意,網格上有65536個頂點,所以它可能不足以獲得您想要的隨機外觀的單個對象。
它的主要要點是你想要避免爲每個對象分別繪製調用。在優化時檢查rendering statistics以獲得改進。另外請注意,有一些CPU和內存的開銷有很多對象,這可以通過使用較大的對象來包含多個較小的網格來避免。
相關問題
- 1. WebDriver應該設置爲靜態以執行併發測試嗎?
- 2. 我應該將Accept-Language頭設置爲「en-gb」嗎?
- 3. 應該將記錄器設置爲靜態還是不需要
- 4. 應該將autovacuum設置爲on嗎?
- 5. 將mysql連接設置爲靜態是一個好主意嗎?
- 6. 在快遞中將靜態文件設置爲靜態文件
- 7. 我應該將共享靜態變量指定爲volatile嗎?
- 8. 應該在C++頭文件中初始化一個const靜態變量嗎?
- 9. 將數組值設置爲靜態
- 10. 將div按鈕設置爲靜態
- 11. 應該將靜態文本存儲在.properties文件中嗎?
- 12. 我應該在我的HttpHandlers中將IsReusable設置爲True嗎?
- 13. 應該在UIViewController的viewDidUnload中將IBOutletCollections設置爲nil嗎?
- 14. 線程應該是靜態的嗎?
- 15. Angular:應該緩存靜態內容嗎?
- 16. IEventStore實例應該是靜態的嗎?
- 17. 我應該使用非靜態會話的靜態嗎?
- 18. 我應該設置AssemblyConfigurationAttribute嗎?
- 19. RuntimeBeanReference設置爲一個靜態字段
- 20. 使用Reflection.Emit設置靜態字段的值在Unity中失敗
- 21. 我應該將Java中的靜態嵌套類重構爲單獨的類嗎?
- 22. 將Retrofit響應設置爲NavigationDrawer標頭
- 23. 如何在Highcharts中爲軸設置靜態最小值
- 24. CSS:當位置爲靜態或相對時,我可以將寬度設置爲屏幕大小嗎?
- 25. 在C中設置ClientID爲靜態#
- 26. 我應該將塊引用設置爲nil AFTER執行嗎?
- 27. 應該立即將圖像src設置爲數據URL嗎?
- 28. Objective-C應該在使用後將數組設置爲零嗎?
- 29. 我應該將字符串設置爲無或空嗎?
- 30. App Engine - 如何爲靜態文件設置「Vary:Accept-Encoding」標頭
是的,因爲Unity會將它們批處理以降低批處理計數。 – Everts