国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity3D手機(jī)游戲性能優(yōu)化技術(shù)的研究

2015-10-15 05:12:44王瑾
關(guān)鍵詞:分析器內(nèi)存性能

王瑾

(蘇州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇蘇州215104)

?

基于Unity3D手機(jī)游戲性能優(yōu)化技術(shù)的研究

王瑾

(蘇州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇蘇州215104)

介紹了基于Unity3D引擎研發(fā)一款塔防游戲過程中的性能優(yōu)化技術(shù),研究分析了包括程序優(yōu)化技術(shù)、優(yōu)化美術(shù)資源、內(nèi)存優(yōu)化技術(shù)、空間瘦身優(yōu)化和性能分析工具等多方面的關(guān)鍵技術(shù),游戲可保持精彩美觀效果且明顯改善和提高了游戲的運(yùn)行性能和操作體驗(yàn),通過歸納總結(jié)出該游戲研發(fā)過程中對(duì)于性能優(yōu)化關(guān)鍵部分的技術(shù)思想和方法,可以為其他Unity3D游戲開發(fā)愛好者提供一些參考。

Unity3D引擎;手機(jī)游戲;性能優(yōu)化

引言

Unity3D是一個(gè)可以用來輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型的互動(dòng)內(nèi)容多平臺(tái)綜合型游戲引擎和開發(fā)工具。流暢的游戲來自流暢的幀率,在優(yōu)化過程中提升游戲的運(yùn)行性能,當(dāng)基本游戲功能到位時(shí),就要確保游戲運(yùn)行表現(xiàn)能夠達(dá)標(biāo),Unity內(nèi)置分析器是衡量游戲運(yùn)行表現(xiàn)的一個(gè)基本工具,使用分析器來分析設(shè)備上的運(yùn)行代碼是一項(xiàng)實(shí)用的功能,正常情況下無法更改一些Unity底層的流程、結(jié)構(gòu)和渲染策略等,但仍需通過對(duì)游戲程序與美術(shù)資源進(jìn)行必要的優(yōu)化,包括程序優(yōu)化技術(shù)、優(yōu)化美術(shù)資源、內(nèi)存優(yōu)化技術(shù)、空間瘦身優(yōu)化和性能分析工具等多方面的關(guān)鍵性能技術(shù),改善游戲的運(yùn)行性能和操作體驗(yàn)。

1 《保衛(wèi)羊村》游戲的制作概要

按照Unity3D游戲項(xiàng)目的制作流程,即模型制作->創(chuàng)建工程->模型構(gòu)建->場(chǎng)景構(gòu)建->程序編寫->測(cè)試發(fā)布,先在3DS Max建模軟件中進(jìn)行游戲基本模型的設(shè)計(jì)制作,如防守方的羊村武士、進(jìn)攻方的灰太狼,武器道具等,導(dǎo)出為FXB格式文件,用PS軟件設(shè)計(jì)貼圖文件,導(dǎo)出為PNG格式。新建Unity工程SheepWar,在Asserts文件夾導(dǎo)入FXB和PNG等模型資源,并陸續(xù)創(chuàng)建Material、Model、Prefab、Scenes、Scripts等文件夾進(jìn)行分類管理。設(shè)計(jì)典型的多個(gè)游戲場(chǎng)景和分關(guān)卡,編制必要的智能AI腳本,在游戲管理器的腳本中進(jìn)行管理、鏈接和調(diào)試[1]。

2 《保衛(wèi)羊村》游戲的性能優(yōu)化技術(shù)

2.1程序優(yōu)化技術(shù)

首先優(yōu)化代碼可讀性,具備良好的編碼風(fēng)格是程序性能優(yōu)化的基礎(chǔ),保持腳本的良好可讀性,必要的注解可以提升調(diào)試與維護(hù)時(shí)的效率,接著要優(yōu)化邏輯復(fù)雜度,大部分復(fù)雜情況都與游戲本身的設(shè)計(jì)有關(guān),要避免一些由于代碼擴(kuò)展或是濫用回調(diào)造成的問題,例如考慮使用數(shù)組或者容器,便是對(duì)于會(huì)產(chǎn)生極大代碼量的switch或回歸寫法的最佳替代品。優(yōu)化OnGUI方法可以明顯提升程序性能,不要使用原生的GUI方法,避免在其中對(duì)變量、方法進(jìn)行更新和賦值,輸出變量建議在Update方法內(nèi),另外刪除腳本中為空或不需要的默認(rèn)方法,合理使用變量來提高運(yùn)行效率,如腳本中頻繁使用的變量就聲明為全局變量,腳本之間頻繁調(diào)用的變量或方法聲明為全局靜態(tài)變量或方法,不要頻繁獲取組件,將其聲明為全局變量,盡量直接聲明變量來代替GetComponent獲取腳本,還有先建好對(duì)象池后使用Translate來“生成”對(duì)象[2]。

2.2優(yōu)化美術(shù)資源

美術(shù)資源對(duì)于程序發(fā)布包大小、性能優(yōu)化、內(nèi)存占用量的影響往往超過其他因素,通過對(duì)美術(shù)資源進(jìn)行優(yōu)化,可明顯提高運(yùn)行效率。通過共享游戲?qū)ο蟮牟牧?,令其在Unity中處于靜止?fàn)顟B(tài),將它們綁定在一起,由此產(chǎn)生的簡(jiǎn)化繪圖調(diào)用是呈現(xiàn)良好移動(dòng)運(yùn)行性能的重要元素;合并使用同貼圖的材質(zhì)球、相同材質(zhì)球的網(wǎng)格,紋理地圖集對(duì)UI元素,使用合理的紋理MIP標(biāo)準(zhǔn),移除所有遠(yuǎn)處背景的網(wǎng)格,減小很耗性能的實(shí)時(shí)陰影,讓不同角色共享動(dòng)畫,在一些關(guān)口移除額外頂點(diǎn)。養(yǎng)成良好的標(biāo)簽、層次和圖層的條理化習(xí)慣,將不同的對(duì)象置于不同的標(biāo)簽或圖層,三者有效結(jié)合能夠方便地按名稱、類別和屬性進(jìn)行查找,平衡美學(xué)與性能進(jìn)行優(yōu)化粒子效果,減少發(fā)射器數(shù)量并盡量減少透明度的需求。

2.3內(nèi)存優(yōu)化技術(shù)

Unity3D在內(nèi)存占用上一直被人詬病,特別是對(duì)于移動(dòng)設(shè)備上的游戲,動(dòng)輒內(nèi)存占用一兩百兆字節(jié),容易耗盡內(nèi)存資源被系統(tǒng)強(qiáng)行退出造成極差的體驗(yàn)。雖然Unity標(biāo)榜自己的內(nèi)存使用是托管的,但事實(shí)上用戶必須正確地使用內(nèi)存,以保證回收機(jī)制正確運(yùn)行,遵循使用原則可以讓非必要的資源盡快得到釋放,從而降低內(nèi)存占用。靈活使用Unity3D里的兩種動(dòng)態(tài)加載機(jī)制Resources.Load或AssetBundle,可以有效地動(dòng)態(tài)加載調(diào)用資源,在資源不再使用的時(shí)候及時(shí)銷毀和釋放資源。

正確使用“垃圾回收器”(GC),確保自動(dòng)清理不用的內(nèi)存,分析器經(jīng)常顯示CPU負(fù)荷過大的原因是GC正在收集垃圾內(nèi)存,避免手動(dòng)GC因?yàn)闀?huì)導(dǎo)致本幀渲染耗費(fèi)時(shí)間以幾何倍數(shù)形式上升,需要避免內(nèi)存碎片產(chǎn)生。盡量使用for代替foreach,使用StringBuilder或string.format代替string的+=操作字符串拼接,如果一次運(yùn)算量過大,可以分幀進(jìn)行處理迭代運(yùn)算,不要把所有運(yùn)算放在同一幀,例如尋路算法、遺傳算法等,盡量使用“尾調(diào)用”來減少使用中間變量的方式來返回結(jié)果。

2.4空間瘦身優(yōu)化

手機(jī)上運(yùn)行的游戲產(chǎn)品需要考慮自身的精簡(jiǎn),盡可能壓縮游戲所需空間,包括控制游戲文件大小、運(yùn)行時(shí)資源空間占用等方面。優(yōu)化美術(shù)資源可以很好地實(shí)現(xiàn)對(duì)游戲文件大小的控制,可以優(yōu)化幾何體模型,而在3D建模時(shí)盡可能減少模型中三角形的數(shù)量,對(duì)于模型沒有影響或肉眼難察覺到區(qū)別的頂點(diǎn)都要盡可能去掉,并且在三維建模軟件中盡可能重用頂點(diǎn),壓縮模型的Mesh,并積極減少紋理大小,使用Texture Atlas可以幫助減少Draw Calls,考慮紋理的長(zhǎng)寬比最好是1比1,長(zhǎng)度值最好是2的整數(shù)冪,這樣可以達(dá)到最佳優(yōu)化效果。使用Unity3D批處理技術(shù)進(jìn)行壓縮,盡量使用同一個(gè)材質(zhì)的物體,動(dòng)態(tài)和靜態(tài)批處理之間的不同在于頂點(diǎn)數(shù)據(jù)的差別和使用網(wǎng)格不同,把這些頂點(diǎn)數(shù)據(jù)合并后再發(fā)送給CPU就可完成批處理,可節(jié)省很多資源的開銷。

2.5性能分析工具

Unity3D提供了強(qiáng)大且易用的性能分析器(Profiler),該分析器用于幫助優(yōu)化游戲的性能,分析游戲在多個(gè)維度花費(fèi)的時(shí)間,如渲染、動(dòng)畫或邏輯花費(fèi)時(shí)間的百分比。在分析器編輯器中,記錄著游戲運(yùn)行每個(gè)幀的數(shù)據(jù),單擊某個(gè)幀將在窗口下部顯示詳細(xì)信息,當(dāng)前選擇的時(shí)間線區(qū)域不同從而顯示的細(xì)節(jié)也有所不同,時(shí)間線的垂直比例尺采用自動(dòng)管理,并嘗試填充窗口的垂直空間。若要獲得CPU使用率區(qū)域等更多細(xì)節(jié),可刪除內(nèi)存和渲染區(qū)域,時(shí)間線和統(tǒng)計(jì)區(qū)域間的區(qū)隔線也可進(jìn)行選定,向下拖動(dòng)以增加時(shí)間線圖表使用的屏幕面積,時(shí)間線包含CPU使用率、渲染和內(nèi)存,單擊面板上的關(guān)閉按鈕移除這些區(qū)域,分析控制欄上的添加區(qū)域下拉列表來重新添加,標(biāo)簽區(qū)域的彩色方塊控制是否顯示關(guān)聯(lián)的時(shí)間線。

分析時(shí)調(diào)整腳本代碼會(huì)對(duì)游戲性能有小小影響,通常這種開銷較小,不太會(huì)影響游戲的幀率,重點(diǎn)分析游戲消耗時(shí)間最多的那些部分,比較分析代碼更改前后的數(shù)據(jù)結(jié)果,靈活應(yīng)用Unity分析器為開發(fā)中的游戲進(jìn)行體檢,通過Profiler.BeginSample和Profiler.EndSample等來自定義檢查范圍,關(guān)注調(diào)試CPU、內(nèi)存使用率、音頻、渲染等的變化,實(shí)現(xiàn)游戲的性能優(yōu)化[3]。

3 結(jié)語

本文概述了《保衛(wèi)羊村》塔防游戲過程中的性能優(yōu)化技術(shù)和方法,研究和分析了包括程序優(yōu)化技術(shù)、優(yōu)化美術(shù)資源、內(nèi)存優(yōu)化技術(shù)、空間瘦身優(yōu)化和性能分析工具等多方面的關(guān)鍵技術(shù),游戲可保持精彩美觀效果且明顯改善和提高了游戲的運(yùn)行性能和操作體驗(yàn),Unity3D游戲的性能優(yōu)化是進(jìn)階階段,仍然有很多高級(jí)的實(shí)用技術(shù)需要更深入的學(xué)習(xí)和研究,這些將在后續(xù)的項(xiàng)目實(shí)踐中繼續(xù)進(jìn)行提煉和總結(jié)。

[1]優(yōu)美締軟件上海有限公司.Unity官方案例精講[M].北京:中國(guó)鐵道出版社,2015.

[2]優(yōu)美締軟件上海有限公司.Unity 4.X從入門到精通[M].北京:中國(guó)鐵道出版社,2013.

[3]金璽曾.Unity3D手機(jī)游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.

(編輯:姚歡)

Research of Performance Optimizing Technologies for Designing Mobile Game based on Unity3D

Wang Jin
(Suzhou Institute of Industrial Technology,Suzhou Jiangsu 215104)

This article describes the performance optimizing technologies during the design and development of a tower defense game based on Unity3D engine,briefly researches on optimization technologies of unity programming,art resources,memory,space and performance analysis tools,which significantly improves and enhances the game's performance and operating experience while maintaining excellent aesthetic effect.The summarized key technologies and methods of performance optimizing provide a good reference for other game developers.

Unity3D engine;mobile games;performance optimization

G898

A

2095-0748(2015)22-0094-03

10.16525/j.cnki.14-1362/n.2015.22.42

2015-11-02

王瑾(1981—),女,江蘇泰州人,碩士,講師,從事Web前端設(shè)計(jì)、動(dòng)畫制作、計(jì)算機(jī)技術(shù)研究。

猜你喜歡
分析器內(nèi)存性能
酒精分析器為什么能分辨人是否喝過酒
提供將近80 Gbps的帶寬性能 DisplayPort 2.0正式發(fā)布
“春夏秋冬”的內(nèi)存
多邊形電極線形離子阱質(zhì)量分析器的結(jié)構(gòu)與性能
應(yīng)用于詞法分析器的算法分析優(yōu)化
Al-Se雙元置換的基于LGPS的thio-LISICON的制備與性能表征
強(qiáng)韌化PBT/PC共混物的制備與性能
RDX/POLY(BAMO-AMMO)基發(fā)射藥的熱分解與燃燒性能
基于內(nèi)存的地理信息訪問技術(shù)
上網(wǎng)本為什么只有1GB?
呼图壁县| 泗洪县| 辽阳市| 焦作市| 大石桥市| 麻栗坡县| 镇平县| 德化县| 内丘县| 潞西市| 巴林右旗| 友谊县| 汉源县| 沙河市| 铜陵市| 荆门市| 砚山县| 云南省| 泾源县| 阿克陶县| 高雄县| 安平县| 铁岭县| 绥中县| 朔州市| 定兴县| 嘉峪关市| 隆子县| 仁化县| 桦南县| 滦南县| 敦煌市| 繁昌县| 石屏县| 三明市| 静宁县| 句容市| 西平县| 安福县| 徐闻县| 丰顺县|