[**Unity3D
如何通過CombineChildren和MeshCombineUtility優化場景?首先解釋下聯結的原理和意思:文檔里說,顯卡對于一個含100個面片的物體的和含1500個面片的物體的渲染消耗幾乎是等價的。所以如果你有N個同一材質的東西,那么把他們聯成同一個物體再統一用一個material那么對于顯卡的渲染消耗就要降低N倍。
方法一:
1是直接在max等工具里聯結好,貼上同一材質再導進來,這方法固然好卻不靈活,而且通常不實用,因為項目里大量同一材質的東西都是[**Unity
系統的樹花等。
2、就是在Unity里再聯結,經常看Island Demo項目的人應該很早就注意到里面的石頭這些都是連在一起的,原因就在這里,他提供了現成就腳本實現聯結。
先到Island Demo的Assets/Script下找到CombineChildren.cs和MeshCombineUtility.cs兩個腳本復制到自己的項目文件(我們要用的只是前者,但他會調用后者,沒有后者unity會報錯,所以把后者扔到項目里不管就好)
然后把你項目里那些用同一Materials的東西扔到一個空物體里面去,再把CombineChildren.cs貼到那個空物體上,搞定!
[**Unity3D
中此腳本的缺陷和使用注意,支持單一material,所以如果在MeshRenderer里用多個materials或里面的子物體含有不同的material就不行了,它會在父物體里生成多個叫Combined Mesh的東西,卻無法把他們賦給父物體。所以,如果發現運行游戲后父物體還是沒帶MeshRenderer,請仔細檢查你子物體是否帶了不同的 material!
以上是官方文檔里提主要改善方法,其他一些優化簡要說下吧,
在人物模型方面,建議:
1、模型必須用一個Mesh Renderer(2個的渲染時間就翻倍)
2、1個Mesh Renderer盡量少用多個materials,一般2-3個就夠了
3、每個模型使用30個左右的骨骼。
其他方面比如盡量不用像素光(Pixels Lights)啊、軟陰影啊這些基本都可以通過調參數來解決。
文章中提到的兩個腳本可以在這里下載。[https://github.com/irtemed88/unity/tree/master/2d%20platform/2DGameplayTutorialProject/Assets/Standard%20Assets/Scripts
Combine Children Extented (sources to share)
[http://forum.unity3d.com/threads/combine-children-extented-sources-to-share.37721/