Unity 2018版本主要更新和新增了哪些內容
題外話: 寫篇文章的主要動力來源還是看了Unity2018.3.0釋出視訊(地址: https://v.qq.com/x/page/z0815ok9b0l.html )之後對我帶來的驚喜和衝動。剛好公司專案組也有員工分享會,所以就想把這些內容整理一下分享更大家。同時給Unity官方這次更新內容點個贊,新內容確實不錯。
文章內容主要主要根據Unity2018的三個版本(1.0,2.0,3.0)進行整理,都是主要核心功能,並不是這次更新的所有內容。
1.0版本主要功能:
1、新渲染架構:Scriptable Render Pipeline
Scriptable Render Pipeline可程式設計指令碼渲染管線,簡稱SRP。是一種在Unity中通過C#指令碼配置和執行渲染的方式。
渲染入口點
當使用SRP時,你需要定一個類,用於控制渲染;這就是你將要建立的渲染管線。入口點是一個對“Render”函式的呼叫,它需要兩個引數,渲染上下文以及一個需要渲染的攝像機列表。
public class BasicPipeInstance : RenderPipeline
{
public override void Render(ScriptableRenderContext context, Camera[] cameras){}
}
簡單介紹一下什麼是渲染上下文:SRP渲染採用的是延遲執行的方式。使用者要設定好需要執行的命令列表,然後再執行。用來設定這些命令的物件叫做“ScriptableRenderContext”。當你向上下文填充完操作命令後,可以通過呼叫“Submit”提交佇列中的所有繪製呼叫。
渲染的攝像機列表就是遊戲中的Camera了,一個遊戲畫面有可能有多個相機繪製,最終疊加或拼湊出一個顯示畫面。所有需要把這些相機都放到一個數組列表內傳入到Render。
2、著色器視覺化程式設計工具Shader Graph
你可以通過視覺化的方式來建立Shader Graph以生成所需的著色器,無需再手動編寫著色器程式碼,只需通過連線各種節點建立節點網路即可。簡單的講就是官方出了一個類似 Shader Forge 的外掛,簡單操作如下圖:

3、C# Job System
隨著我們在Unity 2018.1中推出新的高效能多執行緒系統,我們正在重構Unity的核心基礎。新的系統將使你的遊戲完全利用當下的多執行緒處理器,不用再為程式設計而煩惱。
這得益於全新的C# Job System,它為使用者提供了一個安全簡易的沙盒環境,能夠在裡面編寫並行程式碼。我們還引入了新的模型來預設使用實體元件系統(ECS)編寫高效能程式碼,並使用Burst Compiler聲稱高度優化的原生代碼。
有了預設提供的高效能,你不僅可以在更多的硬體上執行自己的遊戲,還能使用更多的單位和更復雜的模擬效果來建立更豐富的遊戲世界。
4、實體元件系統(ECS)
在Unity 2018.2中,我們加入了多個改進內容,包括反應系統(Reactive system)示例。反應系統將使你在元件狀態發生變化時做出反應,並模擬由事件驅動的行為。
ECS是什麼?簡單來說就是Unity中的一種新的架構模式。準備未來取代 GameObject / Component 的模式。其模式遵循 組合優於繼承 原則,遊戲內的每一個基本單元都是一個實體,每個 實體 又由一個或多個 元件 構成,每個元件僅僅包含代表其特性的 資料 (即在元件中沒有任何方法)。系統便是來處理擁有一個或多個相同元件的實體集合的工具,其只擁有行為(即在系統中沒有任何資料)。 實體與元件是一個一對多的關係 ,實體擁有怎樣的能力,完全是取決於其擁有哪些元件,通過動態新增或刪除元件,可以在(遊戲)執行時改變實體的行為。
ECS旨在比GameObject / MonoBehaviour更容易處理大量物體。
ECS的特點是,由於面向資料的設計 , 很容易並行高速處理,和 C# Job System 一起工作。
5、Burst Compiler
Burst是一個編譯器,它使用LLVM將IL / .NET位元組碼轉換為高度優化的本機程式碼。它作為Unity包釋出,並使用Unity Package Manager整合到Unity中。
Burst主要用於與Job系統高效協作。您可以通過使用屬性[BurstCompile]裝飾Job結構,從而在程式碼中簡單地使用burst編譯器 。預設情況下,在編輯器中,Burst JIT是通過非同步來編譯job,但在上面的示例中,我們使用該選項CompileSynchronously = true確保在第一個Schedule中編譯該方法。通常,您應該使用非同步編譯。
6、移除了獨立播放器構建中對Windows XP的支援。Windows Vista現在是Windows獨立播放器所支援的最老作業系統。
說白了就是不支援XP電腦了,現在確實好多遊戲慢慢都都不支援XP系統了,包括LOL,據說2019年春節的10.0版本就不在支援XP系統完了,主要是微軟很早就停止了對XP系統的支援。就連現在Unity2018也必須在window10下面才可以執行。
7、放棄了對MonoDevelop-Unity的支援,意味著現在Visual Studio是MacOS和Windows系統上的推薦和支援的C#編輯器。
自從官方推出IL2CPP之後,就意味著Mono的終結遲早要來,現在只是IDE的不支援,未來有可能完全放棄Mono。給大家推薦一款牛逼的IDE,也是現在市面上比較火的VS Code,這個也是微軟輕量級的IED,功能缺失非常強大,主要還是因為開源,外圍外掛太豐富了。有興趣的可以瞭解一下。
8、逐步移除舊粒子系統 新的系統Shuriken
這個沒啥說的,舊的粒子系統應該是3.x版本的了,我記得4.x就已經使用Shuriken忍者粒子系統了。
2.0版本主要功能:
1、更新可程式設計渲染管線SRP
2、更新著色器檢視Shader Graph(預覽版)
3、更新對Vulkan支援(實驗版)
Unity 2018.2包含在Windows和Linux端編輯器執行Vulkan的支援。Vulkan是新一代圖形和計算API。它可以對PC、主機、移動端和嵌入式平臺的各類裝置上的GPU提供高效的跨平臺訪問功能。
4、紋理Mipmap流
1、在Unity 2018.2中,我們根據需要向記憶體添加了紋理Mipmap流支援,啟用此功能可以減少Unity應用的紋理記憶體要求。
2、啟用此係統後,Unity將僅在網格靠近已啟用的攝像機時,載入更高解析度的紋Mipmap。高解析度Mipmap資料儲存在記憶體中,整體的紋理記憶體會限制在使用者定義的預算範圍內。
3、如果在載入新的紋理Miplevel後,紋理記憶體超出預算,那麼與攝像機距離最遠網格上的較高解析度Midmap會從記憶體中釋放出來。
4、由於首次載入的紋理資料減少,即僅載入較低解析度Mipmap,初始場景的載入速度也會加速。初始載入速度的提升效果將根據平臺有所不同。
5、你可以完全控制Texture Mipmap Streaming系統,決定哪些Mipmap會載入到記憶體中。通常Unity會載入所有儲存在硬碟上的Mipmap,但使用此係統,你可以直接控制要載入哪些Mipmap等級。
6、該系統還會佔用一小部分的CPU時間,從而節省大量的GPU記憶體。
7、啟用和管理過程十分簡單通過質量設定(Quality Setting)可以輕鬆啟用該功能,你可以定義每個紋理是否應進行流式處理,你也可以查詢指標,以識別紋理記憶體的使用情況,同時還能節省記憶體。你還可以調整各種設定來控制系統,從而平衡記憶體節省和CPU消耗,並允許你優先處理一些紋理,例如:將角色紋理優先於環境紋理。

5、根據架構分離APK檔案
現在新增一個選項用來根據目標架構,如x86、ARM 32和ARM 64分離出多個APK檔案,而不是生成一個較大的APK檔案。然後,對於支援此選項的商店,例如Google Play,你只需要下載相應架構的APK檔案即可。

6、Google Play Instant Games外掛
獲取新使用者的一大阻礙往往是因為繁瑣的安裝過程。下載並開啟應用程式需要花費時間,這會導致不少使用者還沒體驗遊戲之前就放棄。
有了Google Play Instant,使用者不需要預先安裝就可以嘗試體驗遊戲的10MB版本。此外掛簡化了基於Unity的Android應用轉換為即時應用的過程,並可以通過Google Play Instant來進行部署。
該外掛在GitHub上作為一個專案提供,並且能在Unity 2017.x及更高版本上使用。
該外掛的功能包括:
1、可在已安裝(Installed)和即時構建(Instant-build)模式之間切換的選項。
2、帶有Unity構建設定上的集中式檢視和Android安裝包設定,這些設定經過修改後能夠支援Google Play Instant。
3、能夠在連線ADB的Android裝置上構建並執行即時應用。
7、結束對UnityScript的支援
C#、UnityScript、Boo。這三種Unity最早支援的開發語言,現在只剩下c#一種了,boo是最早被淘汰的。
8、Visual Studio Code偵錯程式擴充套件
對於使用Visual Studio Code作為IDE的使用者,我們開發並維護了Visual Studio Code Debugger for Unity擴充套件,它目前作為預覽版推出。

PS:Unity 2018.2還包括183項改進內容和1426個錯誤修復。
3.0版本主要功能:
1、預製件巢狀和改進的工作流程
官方演示視訊 https://v.qq.com/x/page/q0708i3vd0p.html
主要分為下面三個功能點,這是2018的大功能,詳細內容可以自行谷歌查詢,這裡就不展開寫了。
1 、預設模式 (Prefab Mode)
2、預設巢狀功能(Nested Prefab)
3、預設變體(Variants Prefab)
2、編輯器使用者偏好設定改進
1、入口改變了,以前的那個地方找不到偏好設定了。同時新的視窗外觀
2、新的視窗外觀還提供了一個API,方便開發者可以外掛自定義到偏好設定裡面

3、影視相關Timeline和Cinemachine改進
1、Timeline添加了許可權的軌道偏移模式、改進了編輯器的預覽功能
2、Cinemachine加入了物理攝像機支援,事件對映器和一個具有可互動展示功能的程式化噪聲編輯器。我們可以通過視覺化噪聲編輯器,調整Cinemachine攝像機的逼真感。
4、地形系統改進
主要包括:效能提升、多地形支援、新資源型別
5、資源包管理器
資源包管理器可為專案動態載入和更新Unity開發的功能,幫助開發者快速獲取Unity的新功能。隨著更多Unity功能以資源包格式提供,我們正在穩步改進使用者體驗,從而幫助開發者更輕鬆地發現可用資源包和更新,並管理專案中已安裝的資源包。

6、Unity Hub改進
2018年9月,我們釋出了Unity Hub v1.0,Unity Hub是一個連線Unity的桌面端應用程式,旨在通過提供管理Unity專案、許可證和附加元件的中心化位置,來簡化所有使用者的使用和製作流程。Unity Hub v1.2加入了通過Unity下載存檔URL來直接下載和安裝舊版Unity編輯器的功能。依賴特定(舊版)編輯器版本的使用者可以通過Unity Hub一鍵獲取舊版編輯器。

7、程式碼大小移除等級(Stripping Level)選項已替換為託管移除等級(Managed Stripping Level)選項

8、記憶體分析器Memory Profiler
Memory Profiler這個分享工具在5.x就有了,只是在github上面自己下載匯入工程,這次更新了一下功能,但是還是預覽版本,不過可以通過 資源包管理器 在Unity編輯器內直接下載使用了。

9、Android App Bundle
Android App Bundle是Google Play全新的應用釋出格式,包含遊戲中所有已編譯的程式碼和資源,但它會推遲APK生成和Google Play簽名。
Google Play的新版應用服務模型Dynamic Delivery,它會使應用程式包根據使用者的裝置配置來生成並提供優化過的APK檔案,因此使用者只需下載執行應用所需的程式碼和資源即可。
開發者不再需要構建、簽名並管理多個APK來為多個不同裝置提供支援,而使用者則能下載到更小的優化過的檔案。

10、TextMesh Pro
Unity 2018.3的TextMesh Pro是驗證過的資源包,它加入了高度優化的Font Generator字型生成器,可在執行時生成字形。
你可以通過呼叫混合動態字體系統(Hybrid Dynamic Font System)來結合專案中的靜態字型資源和動態字型資源。

11、Visual Effect Graph(預覽版)
全新的Visual Effect Graph在Unity 2018.3中作為預覽版提供,需結合HDRP使用。你可以使用它來製作可配置,可重用的次世代效果,還可以在GPU上處理數百萬個粒子。
Visual Effect Graph受到主流電影特效軟體的啟發,提供了靈活且易於使用的節點系統,能夠幫助藝術家為遊戲等互動式內容創作驚豔的視覺效果。
Visual Effect Graph演示專案地址:
https://v.qq.com/x/page/k0769n77dao.html
觀看Visual Effect Graph介紹視訊地址:
https://v.qq.com/x/page/b08075aao63.html
12、Project Tiny小遊戲開發套件
Project Tiny是Unity的一個全新模組,提供了全新的執行時和編輯器模式,旨在構建可以即時載入而無需安裝的遊戲和體驗。
Project Tiny為開發者提供了快速建立高質量2D小遊戲和可玩式廣告所需的工具,創建出的遊戲安裝包非常之小,可以在各種移動裝置上快速啟動。

13、Unity FPS示例專案
在今年10月Unite LA上,我們正式釋出了FPS示例專案,這是一款第一人稱多人射擊遊戲的演示專案。該專案旨在成為開發者的靈感源泉,你可以用它來學習Unity中的新功能。
視訊演示地址:
https://v.qq.com/x/page/m07701z9c8g.html
Unity FPS示例專案下載地址:
https://github.com/Unity-Technologies/FPSSample

14、除此之外還更新了: 物理功能:PhysX 3.4、多場景物理、垃圾回收控制、NET 4.x Equivalent指令碼執行時、C# 7.3:Roslyn編譯器、用於重新壓縮下載資源包的執行時API、尋路系統更新、2D功能更新一些了新功能、粒子系統、光照更新、AR、XR等等內容