2017-02-03 19 views
1

我在遊戲中擁有2500 x 2500個單位大小的地形,地形表面上有150 000個沒有碰撞體,物理,陰影或任何物體的小岩石。他們永遠不會動他們坐在那裏。我是否會因設置這些岩石而受益匪淺?或者我還可以做其他事情來做出表演,但保持岩石。我已經將岩石的剔除距離設置爲125.我正在將FPS打印到UI文本以檢查移動設備上的性能。在移動我的FPS是60有或沒有岩石,但在個人電腦上我得到40 FPS沒有岩石和30 FPS與岩石。Unity中應該將15萬個小石頭設置爲靜態嗎?

enter image description here

enter image description here

+0

是的,因爲Unity會將它們批處理以降低批處理計數。 – Everts

回答

4

作爲最低限度你應該確保你的對象資格batching

Static是一種可以幫助您實現這一目標的方法。但我猜你沒有在編輯器中手動放置150 000個對象,所以你不會從靜態給出的編輯器優化中受益。

但是,您可以將對象置於父級之下並調用StaticBatchingUtility.Combine。你只需要調用一次,畢竟放置了15萬個對象。

更進一步,我可以嘗試將多個岩石放入一個對象,例如combining meshes。然後重新使用這些對象中的一個或多個來驗證批次並獲得更高的FPS。每個物體可以包含多個微小的岩石,您可以隨機對它們進行分層以實現隨機觀察。請注意,網格上有65536個頂點,所以它可能不足以獲得您想要的隨機外觀的單個對象。

它的主要要點是你想要避免爲每個對象分別繪製調用。在優化時檢查rendering statistics以獲得改進。另外請注意,有一些CPU和內存的開銷有很多對象,這可以通過使用較大的對象來包含多個較小的網格來避免。

相關問題