Unity 的優化到底從哪裡下手?
提Unity3D項目優化則必提DrawCall,這自然沒錯,但也有很不好影響。因為這會給人一個錯誤的認識:所謂的優化就是把DrawCall弄的比較低就對了。
對優化有這種第一印象的人不在少數,drawcall的確是一個很重要的指標,但絕非全部。為了讓各位和我能達成儘可能多的共識,我首先介紹一下本文可能會涉及到的幾個概念,之後會提出優化所涉及的三大方面:
- drawcall是啥?其實就是對底層圖形程序(比如:OpenGL ES)介面的調用,以在屏幕上畫出東西。所以,是誰去調用這些介面呢?CPU。
- fragment是啥?經常有人說vf啥的,vertex我們都知道是頂點,那fragment是啥呢?說它之前需要先說一下像素,像素各位應該 都知道吧?像素是構成數碼影像的基本單元呀。那fragment呢?是有可能成為像素的東西。啥叫有可能?就是最終會不會被畫出來不一定,是潛在的像素。 這會涉及到誰呢?GPU。
- batching是啥?都知道批處理是幹嘛的吧?沒錯,將批處理之前需要很多次調用(drawcall)的物體合併,之後只需要調用一次底層圖形程序的介面就行。聽上去這簡直就是優化的終極方案啊!但是,理想是美好的,世界是殘酷的,一些不足之後我們再細聊。
- 內存的分配:記住,除了Unity3D自己的內存損耗。我們可是還帶著Mono呢啊,還有託管的那一套東西呢。更別說你一激動,又引入了自己的幾個dll。這些都是內存開銷上需要考慮到的。
好了,這幾個概念提前講清楚了,接下來就講優化所涉及到的三個大方面:
- CPU方面:
佔佔:Unity優化之CPU優化
2. GPU方面
佔佔:Unity優化之GPU優化3. 內存方面
佔佔:Unity優化之內存優化點下面鏈接添加我的微信(summer_dan_3),從此多一個開發者好友:
佔佔的微信(summer_dan_3)
推薦閱讀: