? ? ? 題外話:寫篇文章的主要動力來源還是看了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等等內容