如何消耗更少资源?Unity优化技巧(上)
什么是優(yōu)化?
?
- 為了達(dá)成相同目標(biāo),尋求并采用消耗更少資源的辦法的過(guò)程
對(duì)游戲來(lái)說(shuō)通過(guò)特別的技巧,在實(shí)現(xiàn)相同的表現(xiàn)效果、流暢度的前提下對(duì)硬件機(jī)能的需求更低、更平民化。或者在相同性能的平臺(tái)上,實(shí)現(xiàn)更好的畫(huà)面表現(xiàn)效果、流暢度。是追求極致。
?
- 包括CPU,GPU,內(nèi)存,閃存,網(wǎng)絡(luò)等
一般來(lái)說(shuō)優(yōu)化主要針對(duì)硬件因此分類(lèi)也和硬件相關(guān)。此外優(yōu)化也和職責(zé)相關(guān),程序需要對(duì)代碼優(yōu)化,美術(shù)需要對(duì)資源優(yōu)化,策劃也需提供一些策劃上的方案避免性能開(kāi)銷(xiāo)。
?
- 一個(gè)永恒不變的話(huà)題
人的欲望是無(wú)止境的,玩家的需求和項(xiàng)目的需求永遠(yuǎn)在不斷增長(zhǎng)。優(yōu)化永無(wú)止境。
優(yōu)化方法
?
- 根據(jù)性能指標(biāo)設(shè)定優(yōu)化目標(biāo)
沒(méi)有目標(biāo)就沒(méi)有方向我們首先就是設(shè)立優(yōu)化目標(biāo),這也是一種通用的優(yōu)化方式。不僅僅針對(duì)Unity。
一般游戲的性能指標(biāo)有:幀率,穩(wěn)定性(卡頓),等待時(shí)間(Loading),內(nèi)存占用(手機(jī)上最重要指標(biāo),絕大部分閃退的原因,理想值是內(nèi)存占用低于150M),安裝包大小,網(wǎng)絡(luò)延遲,網(wǎng)絡(luò)流量,耗電量(手機(jī)比較重要,限幀)等等。
例如可以訂我們的目標(biāo)是在低配機(jī)型紅米上可以穩(wěn)定30幀運(yùn)行內(nèi)存200M以?xún)?nèi),在中配機(jī)型上穩(wěn)定在45幀運(yùn)行實(shí)現(xiàn)主流游戲效果內(nèi)存300M以?xún)?nèi),高配機(jī)型上60幀穩(wěn)定運(yùn)行實(shí)現(xiàn)次世代效果內(nèi)存。
?
- 根據(jù)性能指標(biāo)設(shè)定優(yōu)化目標(biāo)
一般來(lái)說(shuō)游戲優(yōu)化也遵循28原則,游戲優(yōu)化又是很費(fèi)時(shí)費(fèi)力的一件事,我們需要找出性能瓶頸。按照優(yōu)先級(jí)來(lái)進(jìn)行優(yōu)化。
望聞:根據(jù)優(yōu)化目標(biāo),先大概分析一下性能指標(biāo)。包括幀數(shù)多少,是否穩(wěn)定,是否存在卡頓。較長(zhǎng)時(shí)間運(yùn)行,發(fā)熱量如何,是否存在閃退。安裝包多大。網(wǎng)絡(luò)流量多大等。找到最優(yōu)先需要解決的點(diǎn)。
問(wèn):詢(xún)問(wèn)相關(guān)開(kāi)發(fā)人員性能熱點(diǎn)大概從什么時(shí)候開(kāi)始出現(xiàn)。我們之前的項(xiàng)目在開(kāi)發(fā)到中后期會(huì)找測(cè)試同學(xué)測(cè)試每日構(gòu)建的版本,及時(shí)監(jiān)控性能指標(biāo),第一時(shí)間發(fā)現(xiàn)性能瓶頸,發(fā)現(xiàn)越早越容易優(yōu)化。
切:通過(guò)一些工具分析來(lái)進(jìn)行深度的分析,必要時(shí)需要自己開(kāi)發(fā)分析工具,定位熱點(diǎn)。
?
- 優(yōu)化性能熱點(diǎn)
找到性能熱點(diǎn)指點(diǎn)之后工作就已經(jīng)完成一大半了,然后針對(duì)熱點(diǎn)指定方案優(yōu)化。下面先介紹一些常用的分析工具。
優(yōu)化工具
?
- Unity Profile
最常用的性能分析工具,官方自帶可編輯器可連真機(jī),不做過(guò)多介紹。
?
- Xcode
蘋(píng)果的性能分析工具,在IOS平臺(tái)上是最好的選擇。
?
- UWA
有本地工具(詳見(jiàn)使用使用UWAGOT優(yōu)化Unity性能和內(nèi)存)和在線版。它通過(guò)自動(dòng)化工具收集Unity Profile的數(shù)據(jù),并結(jié)合人工進(jìn)行測(cè)試分析。可以提供一些采集分析過(guò)的性能數(shù)據(jù)和優(yōu)化建議。
?
- ADB & AndroidStudio
有時(shí)也會(huì)在Android設(shè)備上直接查看性能數(shù)據(jù),日志等。
?
- Unity Frame Debugger
Unity自帶的圖形調(diào)試工具。功能相對(duì)較弱,不過(guò)因?yàn)榧稍诹薝nity中,使用方便。
?
- Xcode GPU Frame Caputre
蘋(píng)果平臺(tái)下圖形調(diào)試最好的選擇。
?
- Adreno Profiler
高通的GPU調(diào)試工具。使用Mono開(kāi)發(fā),特別介紹一下,這是唯一可以比較方便導(dǎo)出渲染資源的工具,可以在不破解的情況下扒取游戲貼圖,模型,Shader等資源。不過(guò)導(dǎo)出的資源會(huì)丟失一些信息需要工具還原。提供記錄渲染API和回放分析,小米2小米4都可以使用,需要安裝AndroidSDK,使用Adb連接。
?
- GPA
Intel的開(kāi)發(fā)工具,DX版本的工具就非常強(qiáng)大(詳見(jiàn)使用英特爾GPA優(yōu)化《軒轅傳奇》游戲的性能),現(xiàn)在也有OpenGL版本,使用方法類(lèi)似。和DX版本兼容性非常好一樣,各種GPU的手機(jī)基本都可以使用,不過(guò)一些深層次的性能分析只有Intel自家芯片才支持。。
?
- NVIDIA Tegra Graphics Debugger
Nvidia公司的分析工具,二手手機(jī)號(hào)出售平臺(tái)前身是大名鼎鼎的PerfHud,代替了PerfHudES。功能強(qiáng)大使用方便,和PerfHud一樣使用的時(shí)候不是抓一幀而是實(shí)時(shí)凍結(jié)手機(jī)上一幀的顯示,支持實(shí)時(shí)修改Shader并在手機(jī)上顯示最終效果。缺點(diǎn)是使用Tegra的設(shè)備比較少,小米3和小米平板。
- Memprofile
Unity官方出的內(nèi)存分析插件。
?
- 其他
每個(gè)顯卡廠商都有自己的分析工具:一般都是基于驅(qū)動(dòng)層。另外開(kāi)發(fā)過(guò)程中還會(huì)開(kāi)發(fā)很多自己開(kāi)發(fā)的性能分析工具和集成一些插件,例如BuildReport,WeTest Cube,Emmagee等等。
?
- 最后使用這些工具能干什么?
- 實(shí)時(shí)顯示游戲運(yùn)行時(shí)CPU,OpenGL runtime以及GPU上的性能數(shù)據(jù)。同時(shí)支持多種3D流水線的override模式。
- 可以看到3D流水線的渲染過(guò)程,API的調(diào)用過(guò)程,Shader的源代碼和指令個(gè)數(shù),使用的貼圖格式等信息,mesh信息。
- 可以分析DC是否過(guò)多,渲染狀態(tài)是否調(diào)用過(guò)多,是否可以合并或者排序,地形,場(chǎng)景,角色,UI,后期處理等占比來(lái)定位性能熱點(diǎn)。
- 可以分析貼圖是否過(guò)多過(guò)大,是否使用顯卡支持的壓縮格式。
- Override模式下。Null Driver, Null Hardware,看定位性能是否在GPU上。關(guān)閉渲染或者一些相關(guān)API來(lái)定位性能瓶頸。例如ps,1像素貼圖等。
- 可以看一些工具提供的Shader優(yōu)化建議,也可以修改Shader實(shí)時(shí)發(fā)送到設(shè)備,既可以分析其他游戲shader也可以自己調(diào)試。
- 分類(lèi)開(kāi)關(guān)不同類(lèi)型的對(duì)象定位性能瓶頸。監(jiān)控內(nèi)存,當(dāng)前引用資源數(shù)據(jù),網(wǎng)絡(luò)延遲,內(nèi)存池開(kāi)銷(xiāo)等。
- 等等。
總結(jié)
以上是生活随笔為你收集整理的如何消耗更少资源?Unity优化技巧(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unity图片优化神器 - dither
- 下一篇: 揭密微信《跳一跳》小游戏那些外挂