欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity項(xiàng)目?jī)?yōu)化相關(guān)技巧

 更新時(shí)間:2021年09月03日 15:50:03   作者:LOONGV  
隨著項(xiàng)目越做越大,工作年限的增加,對(duì)項(xiàng)目的優(yōu)化方面要求也越來(lái)越高(面試必備),本文簡(jiǎn)單羅列一些unity項(xiàng)目中的優(yōu)化技巧,有需要的朋友可以參考下

一、簡(jiǎn)單優(yōu)化

1.圖片紋理大小盡量為2的冪次方(比如128,512,1024等等),以便unity對(duì)其進(jìn)行優(yōu)化。

2.將多個(gè)小圖片紋理合并一個(gè)大的圖片紋理以降低drawcall,特別是同一個(gè)ui面板的元素都放到一個(gè)圖集中,背景圖片盡量單獨(dú)做一個(gè)圖片。

3.盡可能的共用材質(zhì)球,原因同上。

4.不需要播放動(dòng)畫的模型把Animator或animation組件刪除掉,因?yàn)椴还苡没虿挥盟麄兌紩?huì)被初始化。

5.模型方面要注意盡可能的減少頂點(diǎn)數(shù)和三角面數(shù),盡可能重用頂點(diǎn)

6.紋理的mipmap視情況開(kāi)關(guān)(一般用于3D場(chǎng)景,UI和2D游戲中不要使用),打開(kāi)的話可以減少紋理疊加時(shí)的抖動(dòng)閃爍問(wèn)題加快渲染速度,減少圖像鋸齒;但是會(huì)占用更多的內(nèi)存空間以及使項(xiàng)目的打包文件變大(畢竟生成了一系列逐層縮小的備份小圖)。

7.將場(chǎng)景中不會(huì)發(fā)生變化(位移、旋轉(zhuǎn)等)的物體設(shè)置為Static,方便unity進(jìn)行靜態(tài)批處理。

8.打開(kāi)player setting中的靜態(tài)批處理(Static Batching)和動(dòng)態(tài)批處理(Dynamic Batching):靜態(tài)批處理需要勾選場(chǎng)景中不需要變化的物體的Batching Static,否則不會(huì)起到優(yōu)化效果;注意,使用合批處理后僅是降低了CPU到GPU的傳輸次數(shù)和SetPassCall且不需要再次執(zhí)行頂點(diǎn)變化操作,但是會(huì)增大包體及內(nèi)存消耗。

9.燈光方面Spotlight開(kāi)銷很大要盡量少用。

10.盡量少用實(shí)時(shí)陰影,若必用不可則使用Hard Shadow。

11.謹(jǐn)慎使用半透明材質(zhì)和UI以減少overdraw,如alpha為0的image雖然不可見(jiàn)但是gpu仍然會(huì)對(duì)其進(jìn)行繪制;若UI中存在很多半透明界面,建議UI由單獨(dú)的攝像機(jī)進(jìn)行渲染,且UI不要疊加到場(chǎng)景攝像機(jī)渲染范圍內(nèi)。

二、優(yōu)化進(jìn)階

1.使用緩沖池管理需要經(jīng)常出現(xiàn)和銷毀的object。

2.視情況使用lod技術(shù),使用此技術(shù)需要制作多套模型,故而會(huì)使項(xiàng)目的打包文件變大同時(shí)會(huì)占用更多內(nèi)存,但是可以降低需要繪制的頂點(diǎn)數(shù)目,若距離調(diào)整不好可能會(huì)出現(xiàn)模型突變的情況。

3.視情況使用OC(遮擋剔除)功能(通常用于場(chǎng)景中有大量模型的情況),使用此功能可以大大降低overdraw(畢竟被遮擋的物體直接不渲染了),需要注意物體的大小要與單元格大小達(dá)到一個(gè)平衡;可以通過(guò)設(shè)置物體的Occluder Static和Occludee Static來(lái)控制物體為遮擋物或被遮擋物。此技術(shù)的缺點(diǎn)就是會(huì)耗費(fèi)額外的CPU。

4.使用燈光貼圖搭配light probe group來(lái)替代實(shí)時(shí)光照,使用此技術(shù)對(duì)模型要求較高,不能有UV錯(cuò)亂、法線錯(cuò)亂的情況,否則會(huì)出現(xiàn)很奇葩的狀況;同時(shí)使用此技術(shù)將不會(huì)有動(dòng)態(tài)陰影生成。

5.針對(duì)不同的平臺(tái)對(duì)紋理進(jìn)行壓縮(比如IOS為pvrtc;安卓為ETC1,若有alpha通道則使用RGBA 16-bit),需要注意的是壓縮后有時(shí)會(huì)影響紋理的質(zhì)量。

6.不同UI界面使用多個(gè)Canvas,因?yàn)閡nity為了性能優(yōu)化會(huì)合并canvas下所有元素到一個(gè)Mesh中;如果所有界面放到一個(gè)canvas,在界面發(fā)生變化的時(shí)候會(huì)造成重繪,降低性能,最優(yōu)解是一個(gè)靜態(tài)的ui放一個(gè)canvas,動(dòng)態(tài)的ui視情況分別放到不同canvas中,注意也不要分的太細(xì)不然會(huì)造成dc的增加。

7.蒙皮網(wǎng)格動(dòng)畫改為頂點(diǎn)動(dòng)畫,用空間換時(shí)間

8.移動(dòng)端若對(duì)渲染幀率沒(méi)有特定要求,可以通過(guò)降低幀率的形式來(lái)節(jié)省機(jī)器性能,需要注意在 

在項(xiàng)目配置類或主類中的Awake或Start中加入下面的代碼

Application.targetFrameRate = 30;    //移動(dòng)平臺(tái)默認(rèn)30為比較節(jié)省電量的幀率,若要達(dá)到最佳性能則設(shè)置為300(這樣機(jī)器會(huì)盡其所能提高幀率,但是很大概率達(dá)不到300)

9.合理利用Profiler進(jìn)行性能瓶頸分析與優(yōu)化。

10.將Terrain轉(zhuǎn)為Mesh,大地圖使用流式加載及卸載技術(shù)。

11.模型的蒙皮網(wǎng)格動(dòng)畫改為頂點(diǎn)動(dòng)畫,用空間換時(shí)間。

12.使用Animation Instancing優(yōu)化大量模型動(dòng)畫。

13.盡可能用BoxCollider替代MeshCollider。

三、深度優(yōu)化(操作起來(lái)比較復(fù)雜,需要掌握一些底層知識(shí)或需要極端優(yōu)化的情況)

1.使用自定義shader

2.合并mesh(此處可以學(xué)習(xí)下林大佬寫的相關(guān)博客

3.UI中不涉及到射線檢測(cè)的Canvas把GraphicRaycaster組件刪掉

4.盡量少用LayoutGroup和contentSizeFitter,雖然用起來(lái)比較方便,但是在用戶操作時(shí)會(huì)導(dǎo)致整個(gè)ui界面的重繪,有能力的大牛建議自己寫一個(gè)算法來(lái)實(shí)現(xiàn)局部的重繪,沒(méi)有能力的就只能在使用這倆組件的地方使用單獨(dú)的Canvas來(lái)盡量避免整個(gè)UI的重繪了。

5.視情況使用單通道實(shí)例化渲染:要啟用此功能,請(qǐng)打開(kāi) Player 設(shè)置(選擇 Edit > Project Settings__,然后選擇 Player__ 類別)。在 Player 設(shè)置中,導(dǎo)航到底部的 XR Settings 面板,選中 Virtual Reality Supported 選項(xiàng),然后從 Stereo Rendering Method 下拉菜單中選擇 Single Pass Instanced (Preview)。

四、代碼相關(guān)優(yōu)化

1.用for循環(huán)替代foreach、

2.用gameObject.CompareTag("tag")替代gameObject.tag="tag".

3.Find、GetComponent方法盡量在Start、Awake之中調(diào)用,不要在Update之類方法中調(diào)用。

4.用string.format替代+拼接字符串。

5.物理檢測(cè)在fixedUpdate中進(jìn)行。

以上就是Unity項(xiàng)目?jī)?yōu)化相關(guān)技巧的詳細(xì)內(nèi)容,更多關(guān)于Unity項(xiàng)目?jī)?yōu)化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • minio對(duì)象存儲(chǔ)四臺(tái)服務(wù)器部署4個(gè)節(jié)點(diǎn)集群的實(shí)現(xiàn)方式

    minio對(duì)象存儲(chǔ)四臺(tái)服務(wù)器部署4個(gè)節(jié)點(diǎn)集群的實(shí)現(xiàn)方式

    這篇文章主要介紹了minio對(duì)象存儲(chǔ)四臺(tái)服務(wù)器部署4個(gè)節(jié)點(diǎn)集群,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • volatile保證可見(jiàn)性及重排序方法

    volatile保證可見(jiàn)性及重排序方法

    這篇文章主要為大家介紹了volatile保證可見(jiàn)性及重排序方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 詳解phpstudy linux web面板(小皮面板)V0.2版本正式發(fā)布

    詳解phpstudy linux web面板(小皮面板)V0.2版本正式發(fā)布

    小皮面板,是由phpStudy官方團(tuán)隊(duì)針對(duì)Linux服務(wù)器開(kāi)發(fā)推出的一款服務(wù)器環(huán)境搭建以及管理工具。這篇文章主要介紹了phpstudy linux web面板(小皮面板)V0.2版本正式發(fā)布,需要的朋友可以參考下
    2019-10-10
  • Git編輯.gitignore文件并使其生效問(wèn)題

    Git編輯.gitignore文件并使其生效問(wèn)題

    這篇文章主要介紹了Git編輯.gitignore文件并使其生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • JavaScript/VBScript腳本程序調(diào)試(Wscript篇)

    JavaScript/VBScript腳本程序調(diào)試(Wscript篇)

    在日常的操作系統(tǒng)維護(hù)過(guò)程中,有時(shí)我們也會(huì)寫一些小的腳本程序來(lái)簡(jiǎn)化系統(tǒng)管理工作,例如調(diào)用一些WMI函數(shù)來(lái)自動(dòng)安裝卸載程序之類的。
    2009-09-09
  • 教你用PyTorch部署模型的方法

    教你用PyTorch部署模型的方法

    這篇文章主要介紹了用PyTorch部署模型的相關(guān)知識(shí),演示了使用PyTorch最近發(fā)布的新工具torchserve來(lái)進(jìn)行PyTorch模型的部署的相關(guān)知識(shí),需要的朋友可以參考下
    2022-02-02
  • TCP協(xié)議詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    TCP協(xié)議詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    本文描述了TCP協(xié)議,首先簡(jiǎn)單介紹了TCP完成了一些什么功能;介紹了TCP報(bào)文格式,以及典型報(bào)文的數(shù)據(jù)格式?,F(xiàn)在通過(guò)本文給大家詳細(xì)介紹,感興趣的的朋友一起看看吧
    2017-07-07
  • 使用idea 去除 html 代碼前的行號(hào)和空行的方法詳解

    使用idea 去除 html 代碼前的行號(hào)和空行的方法詳解

    這篇文章主要介紹了使用idea 去除 html 代碼前的行號(hào)和空行,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • git fetch與git pull的區(qū)別詳解

    git fetch與git pull的區(qū)別詳解

    這篇文章主要介紹了git fetch與git pull的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 日常收集整理的Git常用命令

    日常收集整理的Git常用命令

    Git 是一個(gè)很強(qiáng)大的分布式版本控制系統(tǒng)。它不但適用于管理大型開(kāi)源軟件的源代碼,管理私人的文檔和源代碼也有很多優(yōu)勢(shì)。下面腳本之家小編給大家?guī)?lái)了Git 常用命令,感興趣的朋友一起看看吧
    2017-10-10

最新評(píng)論