久久精品人妻一区国产传媒国产精品|51黑料吃瓜网在线观看色噜噜色偷偷30根|久久久久久久久国产在亚洲中文字幕人妻|91av福利china人妻91九色|国语精品视频自产自拍|色婷婷av一区二区三区久久|国产91丝袜在线|亚洲二区中文字幕|91久久精品中文内射|中文 欧美 日韩,3d色噜噜狠狠一区二区三区,国产精品福利99,国产精品传媒网站

Unity功能詳解,助力創(chuàng)作者有效優(yōu)化移動(dòng)端游戲性能

文章來(lái)源: 作者:frank 發(fā)布時(shí)間:2021年07月19日 點(diǎn)擊數(shù): 次

隨著手游的火熱,,移動(dòng)端游戲慢慢變成了游戲中的主流類(lèi)型,。許多知名工作室、獨(dú)立工作室和獨(dú)立創(chuàng)作者都開(kāi)始轉(zhuǎn)而進(jìn)行移動(dòng)端游戲的制作,。在制作游戲的過(guò)程中內(nèi)存的過(guò)度使用,,CPU性能限制等問(wèn)題往往讓游戲創(chuàng)作者十分頭疼。Unity的高級(jí)軟件工程師團(tuán)隊(duì)將為這些復(fù)雜技術(shù)問(wèn)題提供支持并幫助創(chuàng)作者們大幅優(yōu)化移動(dòng)端游戲性能,。在本文中他們將與我們分享一些有關(guān)移動(dòng)端游戲優(yōu)化的專(zhuān)業(yè)知識(shí),如果你對(duì)創(chuàng)作移動(dòng)端游戲充滿熱情或是正苦于沒(méi)有好的引擎制作游戲,,那么不妨請(qǐng)繼續(xù)看下去,。

多年的行業(yè)經(jīng)驗(yàn)使得Unity的加速解決方案團(tuán)隊(duì)對(duì)游戲源代碼了如指掌,與大量的用戶(hù)合作,,也使得他們能夠充分利用Unity引擎幫助用戶(hù)解決各種在開(kāi)發(fā)中遇到的難題,。他們深入到游戲項(xiàng)目之中,幫助用戶(hù)確定游戲的性能優(yōu)化點(diǎn),,以獲得更高的速度,、穩(wěn)定性和效率。

在本文中將詳細(xì)介紹如何通過(guò)用戶(hù)界面,、物理和音頻設(shè)置等功能來(lái)提高游戲性能,。

現(xiàn)在讓我們開(kāi)始吧!

物理特性

Unity內(nèi)置的Physics (Nvidia PhysX)在手機(jī)上可能很耗費(fèi)資源,,但以下技巧可以幫助你每秒擠出更多幀,。

優(yōu)化設(shè)置

在PlayerSettings中,找到Prebake Collision Meshes

請(qǐng)確保你已經(jīng)編輯了Physics settings(Project Settings > Physics)并已經(jīng)簡(jiǎn)化了?Layer Collision Matrix,。

禁用Auto Sync Transforms并啟用Reuse Collision Callbacks,。

修改物理項(xiàng)目設(shè)置以提高性能,。

請(qǐng)留意性能分析器中的物理模塊。

簡(jiǎn)化colliders

使用Mesh colliders可能會(huì)很占用資源,。用原始或簡(jiǎn)化的Mesh colliders來(lái)替換更復(fù)雜的Mesh colliders,,來(lái)顯示原始形狀將會(huì)有效的節(jié)約資源。

colliders使用基本體或簡(jiǎn)化網(wǎng)格,。

使用物理方法移動(dòng)剛體

使用分類(lèi)法,,如移動(dòng)位置或者添加力移動(dòng)你的剛體物體。剛體的變形組件會(huì)直接導(dǎo)致物理世界的重新計(jì)算,,這在復(fù)雜場(chǎng)景的創(chuàng)建中非常耗費(fèi)資源,。所以我們可以將物理物體移入固定數(shù)據(jù)而無(wú)需更新。

修正Fixed Timestep

默認(rèn)值Fixed Timestep在項(xiàng)目設(shè)置中是0.02 (50 Hz),。更改此項(xiàng)屬性可以更好的匹配你的目標(biāo)幀速率(例如,,30 fps為0.03)。

但是,,如果幀速率在運(yùn)行時(shí)下降,,這意味著Unity會(huì)每幀多次調(diào)用固定數(shù)據(jù),這可能造成CPU性能負(fù)擔(dān),。

Maximum Allowed Timestep能夠限制物理計(jì)算和固定數(shù)據(jù)事件在幀速率下降時(shí)可以使用的時(shí)間,。降低該值意味著在性能故障期間,物理引擎和動(dòng)畫(huà)可能會(huì)變慢,,同時(shí)也會(huì)降低它們對(duì)幀速率的影響,。

修改固定時(shí)間步長(zhǎng)以匹配您的目標(biāo)幀速率,并降低最大允許時(shí)間步長(zhǎng)以減少性能故障,。

使用物理調(diào)試器可視化

使用物理調(diào)試窗口(窗口>分析>物理調(diào)試器)來(lái)幫助解決碰撞或差異的任何問(wèn)題,。

物理調(diào)試工具可以幫助用戶(hù)可視化物理對(duì)象之間的交互方式。

用戶(hù)界面

Unity用戶(hù)界面(UGUI)經(jīng)常會(huì)成為性能問(wèn)題的來(lái)源,。畫(huà)布組件能夠?yàn)橛脩?hù)界面元素生成并更新網(wǎng)格,,并向圖形處理器發(fā)出繪制調(diào)用。它的功能可能很耗費(fèi)資源,,因此在使用UGUI時(shí),,請(qǐng)記住以下要素。

區(qū)分開(kāi)畫(huà)布

如果有一個(gè)包含數(shù)千個(gè)元素的大畫(huà)布,,更新單個(gè)用戶(hù)界面元素會(huì)迫使整個(gè)畫(huà)布一起更新,,這可能會(huì)讓CPU達(dá)到峰值。

利用UGUI支持多個(gè)畫(huà)布的能力,。根據(jù)需要刷新的頻率劃分用戶(hù)界面元素,。將靜態(tài)的用戶(hù)界面元素保留在單獨(dú)的畫(huà)布上,將動(dòng)態(tài)元素同時(shí)更新到較小的子畫(huà)布上,。

這樣能夠確保每個(gè)畫(huà)布中的所有用戶(hù)界面元素具有相同的Z值,、材質(zhì)和紋理,。

隱藏不可見(jiàn)的用戶(hù)界面元素

在游戲中偶爾會(huì)出現(xiàn)一些用戶(hù)界面元素(例如,當(dāng)角色受到傷害時(shí)會(huì)出現(xiàn)的生命條),。如果啟用不可見(jiàn)用戶(hù)界面元素,,它可能仍在使用繪制調(diào)用。此時(shí)需要精確禁用所有不可見(jiàn)的用戶(hù)界面組件,,并根據(jù)需要重新啟用它們,。

但如果你只需要關(guān)閉畫(huà)布的可見(jiàn)性,那么請(qǐng)禁用畫(huà)布組件而不是游戲?qū)ο?。這可以節(jié)省重建網(wǎng)格和頂點(diǎn)的時(shí)間,。

限制圖形投射并禁用光線投射目標(biāo)

屏幕觸摸或點(diǎn)擊等輸入事件需要圖形投射功能。這在用戶(hù)界面矩形變換的過(guò)程中簡(jiǎn)化了屏幕上的每個(gè)輸入點(diǎn)的循環(huán),。

從頂層畫(huà)布刪除圖形投射默認(rèn)值,。相反,添加圖形投射將專(zhuān)門(mén)針對(duì)需要交互的單個(gè)元素(按鈕,、滾動(dòng)條等),。

禁用反轉(zhuǎn)圖形,默認(rèn)情況下處于激活狀態(tài),。

另外,,我們還可以在所有不需要的UI文本和圖像上禁用射線投射目標(biāo)。如果用戶(hù)界面很復(fù)雜,,有很多元素,,所有這些細(xì)小的改變都可以減少不必要的計(jì)算,節(jié)省資源,。

如果可能,,禁用射線投射目標(biāo)。

避免布局組

布局組更新效率低,,所以要注意謹(jǐn)慎使用。如果你的內(nèi)容不是動(dòng)態(tài)的,,就完全沒(méi)有必要使用布局組功能,,你可以使用比例布局的錨點(diǎn)?;蛘咴谠O(shè)置用戶(hù)界面后創(chuàng)建自定義代碼來(lái)禁用布局組組件,。

如果你確實(shí)需要對(duì)動(dòng)態(tài)元素使用布局組(水平、垂直,、網(wǎng)格),,請(qǐng)避免嵌套它們以提高性能。

布局組會(huì)降低性能,,尤其是嵌套時(shí),。

避免大的列表和網(wǎng)格視圖

大列表和網(wǎng)格視圖非常占用資源,。如果需要?jiǎng)?chuàng)建一個(gè)大的列表或網(wǎng)格視圖(例如,有數(shù)百個(gè)項(xiàng)目),,不要為每個(gè)項(xiàng)目創(chuàng)建一個(gè)用戶(hù)界面元素,,請(qǐng)考慮重用一個(gè)較小的用戶(hù)界面元素池。

避免大量重疊的元素

將大量用戶(hù)界面元素(例如,,堆疊在紙牌游戲中的紙牌)分層會(huì)造成資源透支,。自定義你的代碼,以便在運(yùn)行時(shí)將分層元素合并成更少的元素和批次,。

使用多種分辨率和縱橫比

現(xiàn)在的移動(dòng)設(shè)備大多有著不同的分辨率和屏幕尺寸,,創(chuàng)建用戶(hù)界面的替代版本可以在每臺(tái)設(shè)備上提供最佳體驗(yàn)。

使用設(shè)備模擬器預(yù)覽各種屏幕格式,。

使用全屏用戶(hù)界面時(shí),,隱藏所有其他內(nèi)容

如果暫停或開(kāi)始屏幕覆蓋了場(chǎng)景中的所有其他內(nèi)容,,你需要禁用正在渲染3D場(chǎng)景的相機(jī),。同樣,禁用隱藏在頂部畫(huà)布背后的任何背景畫(huà)布元素也能有效提升游戲性能,。

在全屏用戶(hù)界面期間你可以適當(dāng)降低Application.targetFrameRate,,因?yàn)槲覀儾恍枰?0 fps的幀率進(jìn)行更新。

將相機(jī)分配給世界空間和相機(jī)空間畫(huà)布

離開(kāi)事件或者渲染相機(jī)字段的空白會(huì)迫使Unity填寫(xiě)主攝像機(jī),,這是不必要的資源浪費(fèi),。

這時(shí)你可以使用屏幕空間–覆蓋功能,因?yàn)檫@不需要攝像頭的參與,。

使用世界空間渲染模式時(shí),,請(qǐng)確保填寫(xiě)事件攝影機(jī)。

音頻

雖然音頻通常不是性能瓶頸,,但你仍然可以對(duì)其進(jìn)行優(yōu)化以節(jié)省內(nèi)存,。

優(yōu)化音頻剪輯的導(dǎo)入設(shè)置。

盡可能使用原始未壓縮的WAV文件作為你的源資產(chǎn)

如果你使用任何壓縮格式(如MP3或Vorbis)的音頻,,你需要使用Unity將它解壓縮,,然后在構(gòu)建時(shí)重新壓縮它。這會(huì)導(dǎo)致兩次音頻有損,,降低最終質(zhì)量,。

壓縮剪輯并降低壓縮比特率

通過(guò)壓縮減少剪輯的大小和內(nèi)存使用:

對(duì)于大多數(shù)音頻(或MP3文件對(duì)于不循環(huán)的音頻)我們可以使用Vorbis對(duì)其進(jìn)行壓縮。

使用自適應(yīng)差值脈沖編碼調(diào)制(ADPCM),,經(jīng)常使用的聲音(例如,,腳步聲、槍聲),。與未壓縮的PCM相比,,這將縮小文件,,但在回放的過(guò)程中可以快速解碼。

移動(dòng)設(shè)備上的音效上限是22050Hz,。使用較低的設(shè)置通常對(duì)最終質(zhì)量影響最?。贿@需要用自己的耳朵去判斷,。

選擇合適的負(fù)載類(lèi)型

設(shè)置因片段大小而異,。

小剪輯(<200 kb)應(yīng)該加載時(shí)解壓縮。將聲音解壓縮為原始的16位PCM音頻數(shù)據(jù)會(huì)增加CPU使用率和內(nèi)存,,因此此方法只適合短聲音,。

中等剪輯(<= 200 kb)應(yīng)該保留在內(nèi)存中壓縮。

大文件(背景音樂(lè))應(yīng)該設(shè)置為流動(dòng),,否則整個(gè)資產(chǎn)將立即加載到內(nèi)存中,。

從內(nèi)存中卸載靜音音頻源

在創(chuàng)建靜音按鈕時(shí),不要簡(jiǎn)單地將音量設(shè)置為0,。你可以將音頻源組件從內(nèi)存中卸載,,但前提是玩家不會(huì)經(jīng)常打開(kāi)和關(guān)閉它。