Unity優(yōu)化是一個很大的概念,我們優(yōu)化時需要注意三個方面:CPU優(yōu)化,GPU優(yōu)化,內(nèi)存優(yōu)化。
CPU方面的優(yōu)化:
(1) 減少DrawCall.
(2) 物理組件(Physics)。
(3) 減少GC(垃圾回收)次數(shù)。
(4) 腳本的代碼質(zhì)量。
一、對DrawCall的優(yōu)化
1、什么是DrawCall ?
答:Draw Call就是CPU調(diào)用圖形編程接口,比如DirectX或OpenGL,來命令GPU進(jìn)行渲染的操作。
2、 如何減少DrawCall ?
答: 思路就是每個物體盡量減少渲染次數(shù),多個物體最好一起渲染。所以有三個方案:
(1)使用批處理,Unity在運(yùn)行時將物體合并一次渲染。這里分為動態(tài)批處理和靜態(tài)批處理。
(2)通過把文理打包成圖集盡量減少材質(zhì)的使用。
(3)盡量減少反光,陰影之類的效果,因?yàn)槟菚刮矬w多次渲染。
靜態(tài)批處理就是將沒有生命的不同物體設(shè)置為Static。
動態(tài)批處理是引擎自動進(jìn)行的,例如動態(tài)實(shí)例化Prefab(預(yù)制體)如果動態(tài)物體共享相同的材質(zhì),引擎會自動批處理。動態(tài)批處理有很大限制,網(wǎng)格物體頂點(diǎn)數(shù)不能超過900。
二、對物理組件的優(yōu)化
1、設(shè)置一個合適的FixedTimestep。
2、盡量不要使用網(wǎng)格碰撞器,占用CPU計(jì)算。
三、處理GC的優(yōu)化
雖然GC是用來處理內(nèi)存的,但是的確會增加對CPU的開銷,因此對于GC的優(yōu)化目標(biāo)就是盡量減少GC的觸發(fā)。
GC是何時觸發(fā)的?
1、堆的內(nèi)存不足時,自動調(diào)用GC。
2、編程人員手動調(diào)用GC。
GC的優(yōu)化說白了就是代碼的優(yōu)化,主要注意一下5點(diǎn):
(1)字符串連接的處理。。
(2)盡量不要使用foreach,減少迭代器產(chǎn)生。
(3)不要直接訪問gameObject的tag屬性。換成“if(obj.CompareTag(”Player“))”
(4)使用對象池,以實(shí)現(xiàn)空間的重復(fù)利用。
(5)不要使用LinQ。
四、對代碼質(zhì)量的優(yōu)化
(1)Transfrom組件獲取一次就保留引用,而不是每次都獲取。
(2)不用頻繁的GetComponent
(3)使用內(nèi)建數(shù)組,如Vector3.zero而不是new Vector(0,0,0)。
(4)對方法的參數(shù)優(yōu)化,善于使用ref關(guān)鍵字。
GPU方面的優(yōu)化:
GPU瓶頸:
(1)填充率,可以簡單理解為圖形處理單元每秒渲染的像素?cái)?shù)量
(2)像素的復(fù)雜度,比如動態(tài)陰影、光照、復(fù)雜的shader等
(3)幾何體的復(fù)雜度(頂點(diǎn)數(shù)量)
(4)GPU的顯存帶寬
影響GPU性能的無非就兩大方面,一方面頂點(diǎn)數(shù)量過多,像素計(jì)算過于復(fù)雜;另一方面就是GPU的顯存帶寬。
優(yōu)化方法:
① 減少頂點(diǎn)數(shù)量,簡化計(jì)算復(fù)雜度。
② 壓縮圖片,以適應(yīng)顯存帶寬。
一、減少頂點(diǎn)數(shù)量,簡化計(jì)算復(fù)雜度
(1)保持材質(zhì)的數(shù)目盡可能少,更容易批處理。
(2)使用紋理圖集,代替小貼圖。
(3)如果使用了紋理圖集和共享材質(zhì),使用Renderer.sharedMaterial來代替Renderer.material。
(4)使用光照貼圖(lightmap)而非實(shí)時燈光。
(5)使用LOD(多層次細(xì)節(jié)),好處就是那些離得遠(yuǎn)看不清的細(xì)節(jié)可以忽略。
(6)遮擋剔除
(7)使用mobile版的shader,因?yàn)楹唵巍?/p>
二、壓縮圖片,減小顯存帶寬壓力
(1)OpenGL ES2.0使用ETC1格式壓縮等,在打包設(shè)置里有。
(2)使用MipMap,小圖集
內(nèi)存方面的優(yōu)化:
(1)Unity3D的內(nèi)部內(nèi)存
(2)Mono的托管內(nèi)存
(3)若干自己引入或第三方DLL所需的內(nèi)存(非重點(diǎn))
-
cpu
+關(guān)注
關(guān)注
68文章
10829瀏覽量
211198 -
gpu
+關(guān)注
關(guān)注
28文章
4703瀏覽量
128729 -
Unity
+關(guān)注
關(guān)注
1文章
127瀏覽量
21776
發(fā)布評論請先 登錄
相關(guān)推薦
評論