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