u3d性能优化
內(nèi)存優(yōu)化:
?
1、如果是開發(fā)2D游戲,盡可能的把圖集做得不超過1024,最好是512,如果不斷的把圖集做成2048的話,會一直把內(nèi)存撐爆,因為凡是加載其中一個圖片,便會把整個2048的圖集都加載進去了,除非這個是公共的圖集,在哪個場景都會頻繁用到,否則不應(yīng)該把圖集弄太太大。
?
2、盡量不要一下子把所有的場景元素加載到場景中,凡是分開出現(xiàn)的應(yīng)該從Resource.Load來進行加載,然后在不用的時候通過unLoad來進行清除資源。也就是說像太多對話框之類的不要一開始隱藏在場景中,而是要把它在固定的時候去加載它。
?
?減少運算壓力而不減少內(nèi)存大小:
關(guān)于gameObject上掛載的腳本的激活狀態(tài)區(qū)別,無論是激活狀態(tài)還是未激活的狀態(tài),此gameObject上始終會消耗內(nèi)存來保有當(dāng)前的狀態(tài),但非激活狀態(tài)可以減少運算壓力,使得u3d再也不會對此物件再發(fā)送Update, Start等u3d的特有事件,但是,如果此類有靜態(tài)方法的存在,依舊還是能夠正常執(zhí)行。
?
減少運算壓力:
1、把盡可能多的靜態(tài)物體勾上靜態(tài)的屬性,從而減少CPU運算壓力,
2、減少固定更新的時候,FixUpdate,還有一些不需要那么實時計算的檢查可以用個條件判斷,滿i > 5 才檢查一次,這也是比較簡單的降低消耗的措施。
3、以非壓縮格式代替壓縮格式,圖片上,png一般來說都是比jpg好的在ios平臺,但是png相對比較大一點,所以jpg可以做成背景圖,動態(tài)圖片最好用png,聲音也是wav這種非壓縮格式處理起來比mp3處理起來是快些,但是wav會增加容量,事實上邇總會在容量和性能之間找個平衡點。
?
4、減少Draw Call,這基本上是個邇隨便google一下就能發(fā)現(xiàn)的性能問題,但事實上華麗復(fù)雜的畫面往往是要求更多的draw call的,邇可以用個預(yù)先做好的效果圖直接扔上去渲染,但這樣又缺乏了靈活性,造成了容量的增加,總之性能,效果,容量總是在互相制約著,邇還是得需要按實際情況決定到底是優(yōu)先處理哪個好,但在苛刻的情況下,容量和效果不能增加的情況下提升代碼質(zhì)量來提升性能也是可以的,不過提升代碼質(zhì)量要更高的技術(shù)和時間,這又是另外一個實時的問題了,效率!所以倒回頭,又是個領(lǐng)導(dǎo)的策略性問題了,到底是慢工做細活還是要搶先市場,這又是實際情況所決定了,解決辦法是有N種的,到頭來,還是得看邇自己來把握。
?
5、SendMessage是狠方便,但動態(tài)意味著更多的負擔(dān),而且由于發(fā)送消息無視類,所以可能會產(chǎn)生發(fā)多了去其它類的情況造成難以察覺的BUG,但其實發(fā)送消息又是個非常方便的工具,所以看邇怎么來取舍了。
?
如果把一個MonoBehavir的類的某些方法定義成了一個靜態(tài)類,記得靜態(tài)方法不要引用gameObject和transform等屬性,因為這些屬性僅僅存在于當(dāng)前的場景中,假若上一個場景已經(jīng)運用了這些類,那么到下一個場景后,這些變量便會隨著gameObject的摧毀而消失。
?
剩下的基本上是老生常談了,減少過多材質(zhì)的運用,shader的運用,過多了模型頂點,動態(tài)燈光的運用,改成烘焙的。其實這里性能的優(yōu)化多數(shù)下是與游戲容量成正比的,也就是說光邇的游戲容量可以越大的時候,性能就要求越低,這就是說預(yù)計算代替了即時演算,當(dāng)然現(xiàn)實是游戲容量最好狠少,配置最好越低,開發(fā)難點總是與需求相背離的。
?
?
結(jié)語:性能優(yōu)化不建議開始就弄,特別對于手游業(yè)的高動態(tài)性,需求經(jīng)常變,可能邇這個功能下個月就不需要了,所以不要浪費時間去做些無意義的事情,所以我們總要記得一件事,游戲是要來盈利的,我們應(yīng)該要讓玩家能容忍的情況下用最省時省力的方式做出真正盈利性的游戲,這才是性能優(yōu)化的主旨。
?
這里有更多關(guān)于u3d內(nèi)存管理的文章:http://www.unity manual.com/thread-906-1-1.html
?
U3D官網(wǎng)關(guān)于性能優(yōu)化的說明:http://docs.unity3d.com/Documentation/Manual/OptimizingGraphicsPerformance.html
?
U3D WIKI關(guān)于性能優(yōu)化的說明:http://wiki.unity3d.com/index.php?title=General_Performance_Tips
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
- 上一篇: 前端的一套UI分享
- 下一篇: Apache 安装的2种方法