中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity項目優化的相關技巧

發布時間:2021-09-03 16:15:43 來源:億速云 閱讀:152 作者:chen 欄目:開發技術

本篇內容介紹了“Unity項目優化的相關技巧”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

目錄
  • 一、簡單優化

  • 二、優化進階

  • 三、代碼相關優化

一、簡單優化

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

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

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

4.不需要播放動畫的模型把Animator或animation組件刪除掉,因為不管用或不用他們都會被初始化。

5.模型方面要注意盡可能的減少頂點數和三角面數,盡可能重用頂點

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

7.將場景中不會發生變化(位移、旋轉等)的物體設置為Static,方便unity進行靜態批處理。

8.打開player setting中的靜態批處理(Static Batching)和動態批處理(Dynamic Batching):靜態批處理需要勾選場景中不需要變化的物體的Batching Static,否則不會起到優化效果;注意,使用合批處理后僅是降低了CPU到GPU的傳輸次數和SetPassCall且不需要再次執行頂點變化操作,但是會增大包體及內存消耗。

9.燈光方面Spotlight開銷很大要盡量少用。

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

11.謹慎使用半透明材質和UI以減少overdraw,如alpha為0的image雖然不可見但是gpu仍然會對其進行繪制;若UI中存在很多半透明界面,建議UI由單獨的攝像機進行渲染,且UI不要疊加到場景攝像機渲染范圍內。

二、優化進階

1.使用緩沖池管理需要經常出現和銷毀的object。

2.視情況使用lod技術,使用此技術需要制作多套模型,故而會使項目的打包文件變大同時會占用更多內存,但是可以降低需要繪制的頂點數目,若距離調整不好可能會出現模型突變的情況。

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

4.使用燈光貼圖搭配light probe group來替代實時光照,使用此技術對模型要求較高,不能有UV錯亂、法線錯亂的情況,否則會出現很奇葩的狀況;同時使用此技術將不會有動態陰影生成。

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

6.不同UI界面使用多個Canvas,因為unity為了性能優化會合并canvas下所有元素到一個Mesh中;如果所有界面放到一個canvas,在界面發生變化的時候會造成重繪,降低性能,最優解是一個靜態的ui放一個canvas,動態的ui視情況分別放到不同canvas中,注意也不要分的太細不然會造成dc的增加。

7.蒙皮網格動畫改為頂點動畫,用空間換時間

8.移動端若對渲染幀率沒有特定要求,可以通過降低幀率的形式來節省機器性能,需要注意在 QualitySettings.vSyncCount中不能設置為Don't Sync否則下面的設置將無效,設置方式如下:

在項目配置類或主類中的Awake或Start中加入下面的代碼

Application.targetFrameRate = 30;    //移動平臺默認30為比較節省電量的幀率,若要達到最佳性能則設置為300(這樣機器會盡其所能提高幀率,但是很大概率達不到300)

9.合理利用Profiler進行性能瓶頸分析與優化。

10.將Terrain轉為Mesh,大地圖使用流式加載及卸載技術。

11.模型的蒙皮網格動畫改為頂點動畫,用空間換時間。

12.使用Animation Instancing優化大量模型動畫。

13.盡可能用BoxCollider替代MeshCollider。

三、深度優化(操作起來比較復雜,需要掌握一些底層知識或需要極端優化的情況)

1.使用自定義shader

2.合并mesh(此處可以學習下林大佬寫的相關博客)

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

4.盡量少用LayoutGroup和contentSizeFitter,雖然用起來比較方便,但是在用戶操作時會導致整個ui界面的重繪,有能力的大牛建議自己寫一個算法來實現局部的重繪,沒有能力的就只能在使用這倆組件的地方使用單獨的Canvas來盡量避免整個UI的重繪了。

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

三、代碼相關優化

1.用for循環替代foreach、

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

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

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

5.物理檢測在fixedUpdate中進行。

“Unity項目優化的相關技巧”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虎林市| 鄂伦春自治旗| 绿春县| 开鲁县| 奉新县| 铜鼓县| 辽宁省| 黄龙县| 大方县| 子长县| 凤山县| 南安市| 华亭县| 巢湖市| 玛沁县| 龙江县| 洪雅县| 四子王旗| 曲靖市| 探索| 晋州市| 河北省| 武平县| 奉节县| 边坝县| 马尔康县| 改则县| 重庆市| 西乌| 宜宾市| 嘉鱼县| 丹江口市| 汤原县| 福鼎市| 新沂市| 宁武县| 洛南县| 来安县| 昌吉市| 苏州市| 会理县|