
文章目錄
- 📢前言
- 🎬Unity實用優化技巧專欄《導航帖》
- 1?? 優化的基本概念/意義
- 2?? 腳本代碼優化策略
- 3?? UI常規優化邏輯
- 4?? 物理引擎優化篇
- 5?? 圖形渲染優化篇
- 6?? 批處理的優勢
- 7?? 藝術類資源優化
- 8?? 記憶體管理優化
- 💬總結
- 社區新活動,每周都送書!
- 👑評論區抽獎送書
- 🎁抽獎規則
- 🎄《Unity 游戲優化(第2版) 》推薦理由(?????)
📢前言
游戲引擎是游戲開發中最基礎也是最重要的開發工具,而Unity3D則是眾多引擎中的佼佼者,- 成為一名優秀的游戲客戶端開發者,不僅需要常年的實踐積累和思考,更需要結實的基礎做支撐,
- 也就是所謂的 “基礎不牢,地動山搖” ,
- 而
優化則是老生常談的一個話題了,在任何專案里都扮演著重要角色, - 所以本系列專欄是 小Y 參考幾本Unity優化書籍、網上的優質優化系列教程 以及 自身的經驗整理而成,
- 會盡量保持每周都更新,本專欄的內容后續也都會同步放到 『Unity精品學習專欄??』 中
- 該專欄提前訂閱優惠力度會大很多,所以有需要的小伙伴記得早點去訂閱哦!
🎬Unity實用優化技巧專欄《導航帖》
本篇文章會對我開的這個 『Unity精品學習專欄??』 做一個簡單的概述,簡而言之就是一個目錄,
后面我會根據這個目錄來寫對應的優化文章,后期可能有所變動,也會同步修改更新的!
下面是一個大概的優化結構,可以一起來看一下

目前暫定以這個大綱為主,后面會根據這個概述的內容進行更新(計劃2022年更完~)
如果覺得 小Y 整理的這個大綱有什么地方不到位的,也可以指出參考呀!
Unity優化部分內容實際上細分的話有很多,這里只是把最常用的一部分列出來了,
上圖中出現的基本上就是專案中都會用到的幾個部分,所以說每個部分都是重點!
下面針對這幾個部分做一個簡單的概述,后面再詳細介紹,
1?? 優化的基本概念/意義
談及優化,作為一個程式員來說,應該都知道是怎么一回事,
我覺得 優化 和 性價比 其實很像,
我們在生活中使用最少的錢去買最實用的物品是性價比最高的,
同理,如何讓程式在最省性能的情況下去完美執行同一個功能 就可以理解成 優化,
一般來說,要實作某個功能,我們可以有N種做法,就跟一個數學題有很多種題解一樣,
我們要做的 就是以一種 最優解 的方式用編程做出這道題!
在Unity中有一個自帶的性能分析工具 Unity Profiler

使用這個工具可以讓我們在程式運行時,實時便捷的觀察一些性能所需要的資料,
還有 性能分析的方法,有以下幾部分
- 🏳??🌈驗證目標腳本是否出現在場景中
- 🏳??🌈驗證腳本在場景中出現的次數是否正確
- 🏳??🌈驗證事件的正確順序
- 🏳??🌈最小化正在進行的代碼更改
- 🏳??🌈盡量減少內部干擾
- 🏳??🌈盡量減少外部干擾
具體詳細資訊可以來這篇文章學習:【Unity 優化篇】| 優化的基本概念/意義,Unity Profiler工具的使用 以及 性能分析的方法【精華收藏】
2?? 腳本代碼優化策略
說完了基本的 優化概念/意義 那接下來就是實際操作部分了
那首先想到的就是腳本代碼優化了,因為 優化代碼 是最基礎的,也是最直觀的一種優化方法,
關于 腳本代碼優化的策略 也有很多,后面也會針對重點出幾篇博文來介紹詳細內容,這里先簡單介紹一下,
- 🏳??🌈獲取物件和組件的最佳方法
- 🏳??🌈移除慷訓呼
- 🏳??🌈快取組件使用
- 🏳??🌈空參考的快速檢索
- 🏳??🌈避免在運行時進行的操作
- 🏳??🌈禁用未使用的腳本物件
還有一些其他需要注意的點,如下圖所示:

目前也是寫了兩篇文章來介紹部分腳本代碼優化策略的文章:
【Unity優化篇】 | Unity腳本代碼優化策略,快速獲取 游戲物件 和 組件 的方法
【Unity優化篇】 | Unity腳本代碼優化策略,空參考快速檢索、使用合適的資料結構、禁用腳本和物件等 性能優化方法
該部分的文章目前也只是講了一下最基本的表面上很好解決的部分,腳本代碼的地方鉆研下去還是有很多難點的,
3?? UI常規優化邏輯
這里說的 UI優化 指得是Unity的 UGUI,也是目前主流用的UI系統,其他的就不做介紹了
UI優化 這塊的話核心其實就一個地方:降低DrawCall
DrawCall 可以理解成 CPU向GPU每發出一條渲染指令,這個程序就可以稱作一個DrawCall
降低DrawCall 的方法有很多種,比較常用的有層級控制、圖集制作、Mask、Graphics Rebuild等等
后面會單獨寫文章來介紹這部分的關鍵內容,這里先簡單說一下大概思路,方便后續學習整理,
- 🏳??🌈降低DrawCall
- 🏳??🌈記憶體優化
- 🏳??🌈動靜分離
- 🏳??🌈禁用某些組件預選項

4?? 物理引擎優化篇
物理引擎是Unity中的一類獨特的子系統,其行為和一致性是影響產品質量的主要因素,
這部分主要是介紹減少Unity物理引擎中的CPU峰值、開銷和記憶體消耗的方式,同時包括改變物理行為的方法,在保持游戲質量的同時優化性能,
主要包括下面幾個部分:
- 🏳??🌈時間步長和FixUpdate
- 🏳??🌈碰撞器型別
- 🏳??🌈碰撞
- 🏳??🌈射線發射
- 🏳??🌈剛體激活狀態
- 🏳??🌈如何構造場景以優化物理行為
- 🏳??🌈使用相同的碰撞器型別
- 🏳??🌈優化碰撞矩陣
- 🏳??🌈提升物理一致性并避免容易出錯的行為等

后續詳細文章出來之后會在這里更新,這里暫時展示這些,
5?? 圖形渲染優化篇
圖形渲染 這一部分無疑是相當復雜的,UI處理其實也可以歸納為這部分之下,
這里的話我們就從管道渲染、CPU和GPU的邏輯處理等方面開始學習介紹,
學習如何收集正確的資料,深入了解管道渲染,探索各種解決方案和潛在的一些其它問題,
包括下面這幾部分:
- 🏳??🌈GPU實體化
- 🏳??🌈LOD(多細節層次)和其他篩選組
- 🏳??🌈遮擋剔除
- 🏳??🌈粒子系統
- 🏳??🌈著色器優化
- 🏳??🌈光照和陰影優化

后面講到這部分的時候會先簡單的介紹管道渲染等一些基本的理念,
6?? 批處理的優勢
批處理 是3D圖形和游戲中一個通用的術語,它描述了將大量的任意資料塊組合到一起并將它們作為單個大資料塊進行處理的程序,
這對于 CPU和GPU 是非常友好的,因為它可以使用 多個內核同時處理多個任務 ,
批處理物件 指的是 網格、頂點、邊、UV坐標和其他用于描述3D物件的不同資料型別的大集合,
也可以簡單的代表 批處理音頻檔案、精靈、紋理檔案和其他大資料集的行為,
本系列這部分講的主要是兩種用于 批處理網格資料 的主要機制:動態批處理 和 靜態批處理,
這兩種方法本質上是幾何體合并的兩種形式,用于將多個物件的網格合并到一起,并在單一指令中渲染他們,而不是單獨準備和繪制每個幾何體,
這部分主要介紹一下內容
- 🏳??🌈管線渲染 和 Draw Call 概念
- 🏳??🌈Unity的材質和著色器如何一起作業來渲染物件
- 🏳??🌈使用Frame Debugger可視化渲染行為
- 🏳??🌈動態批處理的作業原理及優化方式
- 🏳??🌈靜態批處理的作業原理及優化方式

后續詳細內容請看具體的文章,敬請期待相關文章~
7?? 藝術類資源優化
前邊的內容基本上已經把Unity中一些重要的子系統優化技巧都介紹了,那接下來就來看看怎樣優化 藝術類資源 ,
這里說的藝術類資源,指的是Unity中的音頻、紋理和影片方面,這塊的核心其實是美術分工來搞的,
但是既然是一個完整的Unity專案,那我們就應該對這方面有所了解,程式 跟 美術 協商好才能完成更好的一個效果,
無論是視圖最小化運行時的記憶體占用,保持盡可能小的可執行檔案大小,最大限度的提高加載速度,保持幀速率的一致性等等其他技巧,
都有多種選項提供給我們進行選擇,多數情況下結果應該都是很理想的,但是也有些方法在我們采用之前是值得考慮的,
因為在優化程序中,除了一開始可能進行了某些沒必要的操作 浪費了一些性能之外,后期基本上就是選擇犧牲某個子系統的消耗來達到我們迫切所需的一個優化結果,比如美術方面就是一個很好的例子,往往可能需要降低質量來提高性能,
那這部分就會針對音頻、紋理和網格 影片來做一個詳細的優化程序,下面先來看看內容簡介:
- 🏳??🌈音頻處理
- 🏳??🌈紋理檔案
- 🏳??🌈網格和影片處理

后續詳細內容請看具體的文章,敬請期待相關文章~
8?? 記憶體管理優化
上面的好幾個部分都是涉及到記憶體優化,實際上記憶體優化的涉及范圍很廣,所以這里我們再來梳理一下記憶體管理相關內容,
既然涉及到記憶體優化,那就不可避免的需要涉及到底層原理,
研究底層原理是一件領開發人員頭疼的事,大多數的開發者更喜歡在上層做開發,只需要實作游戲玩法、關卡設計 和 藝術資源管理即可,
但是記憶體效率是性能優化的一個重要元素,這使得我們必須去研究到一些底層部分,這也是走向高級開發工程師必須要走的一步!
只有對Unity引擎底層、Mono平臺 和C#語言有較為深刻的理解 才能通過Unity高效的使用記憶體,
本部分就來理解記憶體分配 和 C#語言特性,他們如何與Mono平臺互動以及Mono如何與Unity引擎互動,
通過本節可以學到Unity引擎底層的方方面面,如:Mono平臺、C#語言、IL2CPP 以及 .NET Framework,
大致內容整理如下:
- 🏳??🌈Mono平臺:本地和托管記憶體域、垃圾回收 和記憶體碎片
- 🏳??🌈記憶體性能分析
- 🏳??🌈記憶體相關性能增強
- 🏳??🌈美術方面記憶體處理

后續詳細內容請看具體的文章,敬請期待相關文章~
💬總結
- 本篇文章是Unity實用優化技巧專欄的《導航帖》,主要是將Unity優化各個部分進行一個簡單介紹,
- 我一直覺得優化部分的內容是最值得我們深入學習的,一個好的優化技巧 當然是我們想要的一個結果,
- 但是更多的則是我們借助優化的程序,可以學習到更多表面上看不到的東西,
- 優化技巧跟底層系統的邏輯關系密切,我們在學習優化的程序其實就是把整個Unity系統的復習了一遍,
- 還能更好的了解Unity的系統運行邏輯,在之后的做專案程序中我們就會知道哪些做法對程式來說是更好的選擇,
- 盡可能早的學習并養成一個性價比最高的作業方法,提高我們做專案的效率,
- 所以說優化技巧不管是在編程的哪個領域,都是占據相當重要的位置,一定要重視起來哦!
- 本篇文章就介紹到這里了,想學習更多Unity知識記得點贊關注我哦!
資料白嫖,技識訓助
| 學習路線指引(點擊解鎖) | 知識定位 | 人群定位 |
|---|---|---|
| 🧡 Unity系統學習專欄 🧡 | 入門級 | 本專欄從Unity入門開始學習,快速達到Unity的入門水平 |
| 💛 Unity實戰類專案 💛 | 進階級 | 計劃制作Unity的 100個實戰案例!助你進入Unity世界,爭取做最全的Unity原創博客大全, |
| ?? 游戲制作專欄 ?? | 難度偏高 | 分享學習一些Unity成品的游戲Demo和其他語言的小游戲! |
| 💚 游戲愛好者八萬人社區💚 | 互助/吹水 | 八萬人游戲愛好者社區,聊天互助,白嫖獎品 |
| 💙 Python零基礎到入門 💙 | Python初學者 | 針對沒有經過系統學習的小伙伴,核心目的就是讓我們能夠快速學習Python的知識以達到入門 |
社區新活動,每周都送書!
| 🚀 社區活動,重磅來襲 🚀 |
【游戲開發愛好者社區】在本周重磅新推出【每日打卡】活動
🎁 新玩法,獎勵升級!游戲開發愛好者社區:https://bbs.csdn.net/forums/unitygame
社區中心思想:今天你學到了什么?
在社區你可以做些什么: 每日強化知識點,白嫖書籍禮品!
一個人可以走的很快,一群人才能走的更遠!🔥爆C站的游戲開發愛好者社區歡迎您的加入!
更多白嫖活動詳情:https://bbs.csdn.net/topics/603722518
👑評論區抽獎送書
最后在評論區進行抽取三名幸運的小伙伴送下面這本書籍
-
這次博主多方聯系,最終搞到了一些unity 相關的書籍,在這里搞個小活動抽獎送給大家,對看書感興趣的小伙伴可以參加一波呀,剛開始可能參與的不多,抽中概率很大哦!
-
《Unity 游戲優化(第2版) 》
-
一本非常經典的
Unity游戲優化編程名著,結合Unity開發使用效果卓佳! -
尤其是想從事Unity開發游戲的小伙伴,這本書就可以讓你了解Unity用到的優化相關知識,對癥下藥可以極大地提高學習效率!
🎁抽獎規則
規則如下:
| 🚀 規則如下🚀 |
-
給本篇博客文章
點贊收藏評論三連,然后在評論區評論里點贊數 排名前五的評論抽取三個小伙伴!送一本Unity的書籍! -
總共
抽三本,中的幾率還是很大的哦~ 想看書的小伙伴參與起來!點贊數越高中獎幾率越大! -
中獎資訊明天下午本篇文章評論區公布!記得留意呀! -
沒抽到的,但是喜歡這本書的小伙伴也可以在網上自行購買哈,官方正品商店購買即可!
| 🚀 規則如上🚀 |
🎄《Unity 游戲優化(第2版) 》推薦理由(?????)
1 案例完整
Unity是一個令人驚嘆的游戲開發框架,它包含大量的特性集且易于使用,有助于將一些最炫酷的處理和渲染功能呈現給業余愛好者和專業人士,
本書展示了如何使用Unity 2017提升游戲性能,并演示高性能不僅局限于預算高的游戲,
2 案例經典實用
由于沒有什么能比糟糕的用戶體驗更快地讓玩家遠離游戲,因此本書首先解釋了如何使用Unity Profiler檢測問題,學習如何使用秒表、計時器和日志方法診斷問題,
接著介紹Unity內置的批處理流程,它們何時能用于提升性能;分析將在運行時使用最小化的空間、CPU和記憶體匯入藝術資源,并發掘一些未充分利用的特性和方法,來管理資源資料,
3 適用物件
本書最后學習如何適當地組織資源來改進開發作業流,以及如何通過物件池快速有效地實體化資產,
4 圖書簡介
- 使用Unity Profiler查找程式中任何地方的瓶頸,并發現解決它們的方法,
- 實作C#腳本撰寫的更佳實踐,避免常見誤區,
- 深入理解渲染管線,通過減少繪制呼叫和避免填充率瓶頸來更大化渲染管線的性能,
- 以大多數開發者都能理解的方式增強著色器,通過微妙而有效的性能調整優化它們,
- 充分利用物理引擎使場景盡可能保持動態,
- 組織、過濾并壓縮藝術資源,保持高品質的同時更大化性能,
- 發現VR專案中各種嚴重的性能問題,找到解決它們的方法,

京東PC購買鏈接在這
溫馨提示: 點擊下面卡片可以獲取更多編程知識,包括各種語言學習資料,上千套PPT模板和各種游戲原始碼素材等等資料,更多內容可自行查看哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/414003.html
標籤:其他
上一篇:藍橋杯第二講--遞推【例題】
下一篇:實作猜數字小游戲
