Unity 2020.1 更新亮點介紹

2020-08-04

Unity 2020.1 更新亮點介紹 

原文:Kelvin / 達哥

2020新功能非常多,
我來聊聊2020將會有哪些新的改進。


以往Unity的版號是從.1 .2 .3 最終到.4 LTS

我們在上一篇2019的文章已提過,從2020開始將會改變,版號規範將會縮短成.1 .2 然後.3 LTS,將不會再有.4這個版號,最終我們希望版號的時間表能更貼近年份

接下來我們就來看看2020有哪些改進吧!


==Asset Import Pipeline 資源導入流V2==

我們在去年重建了整個資源導入的流程,從2020.1開始這個V2版將會是預設值。這個版本大大的改善了資源導入的時間,這代表平台切換的速度也會大幅提升,新結構對於資源之間的依賴關係描述更可靠,未來在打包時解決資源依賴的增減將會更容易。


Asset Import Pipeline V2


==Burst編譯器 1.3==

這個Burst編譯器是UnityDOTS裡很重要的一環,他的主要功能就是針對專案的加速有直接的幫助。這個功能已經發佈有一年了,在1.3這個版本當然也改進了許多,效能的提升以及更多API接口等等,但我個人最期待的是,Burst 1.3編譯出來的能自帶除錯用程式,能通過Visual Studio或是XCode更容易來追蹤效能問題。


Burst編譯器 1.3 除錯


==文檔編輯器整合==

Unity現在把像是Visual Studio, Rider這種程式IDE都整合在一起,並且放在Package Manager內。

從2020.1開始也加入了Visual Studio 2019套件,隨著版本的演進,會有越來越多的IDE被收錄在這。當然自行安裝自己的工具也是可以的。

整合的文字編譯器視窗


==Prefab編輯器改進==

Prefab編輯器是在2018.3時發佈的,它可以編輯一個Prefab預製物件,但也因為是另開窗口的關係,當你想要和場景其他物件對照的時候不太方便。從2020.1開始編輯Prefab物件會預設在場內編輯。場景內其他的物件會變成灰色,當然你也可以切換顯示或隱藏。

Prefab編輯視窗


==新除錯流程==

從2020.1開始,專案在Unity編輯器內還沒編譯打包之前,就會先以發佈考量的格式來安排執行程式碼。這樣不但能加速編譯時間,也帶來了一個好處,當你發現執行中的專案出現了一些問題,可以馬上切換到除錯模式,再也不需要重啟遊戲,對於重啟遊戲後再也無法重現問題的人來說,這是非常好用的一個功能。未來你可以在沒有開除錯模式的狀況下測試遊戲,當遇到問題時即時打開除錯模式除錯。這樣一來平時執行也就不用載入除錯模式所需的模組,報告更貼近真實測試,效能也會比較好。

除錯模式切換更便利


==序列化通用型態欄位==

以往如果你想序列化一個通用型態欄位,必須先定義一個非通用型態子類(non-generic subclass)。從2020.1開始就不用這麼麻煩,可以直接產生了。

直接產生通用型欄位


==Input System==

新的輸入系統在2020.1從預覽改為正式版
這個系統從2019週期導入到現在,為了解決各種不同現代平台操作方式像是觸碰、鍵盤和搖桿等等的輸入邏輯而重新打造的系統。實現了做一套操作,全平台通用。
不但如此,也開放了許多API接口方便開發者和UGUI這類系統直接互動。

New Input System


==Build Report Inspector 打包報告檢視==

Unity從2018開始導入了BuildReport API,專門用來除錯打包過程所發生的問題,比如打包為什麼慢?有什麼優化空間?為什麼漏檔案等等?產生出來的報告就可以顯示在這個Build Report Inspector打包報告檢視窗口裡。目前這個功能才開始進入預覽,源碼會放在Github上。

新的打包除錯介面


==Standalone Profiler 獨立的效能分析窗口==

以往的除錯器Unity Profiler是整合在編輯器內的,這個除錯器可以觀看專案每一幀的消耗到底花在哪裡,方便評估優化方案,但因為產出的報告也包含了Unity編輯器的消耗,數值混在一起反而容易造成判斷錯誤。從2020.1開始這個Profiler可以單獨開啟,代表著整個除錯流程就會移到Unity之外作為單獨運行的程式,所產出的報告就會更貼近專案執行的真實消耗。

要開啟這個程式可以從Window->Analysis->Profiler(Standalone Process)來開啟。

單獨開啟的 Unity Profiler


==Profiler 自訂事件==

現在你也可以通過Profiler的自訂API來把事件送到Profiler,產生一個可視化的圖表,例如將Unity在Job系統多執行緒時的分配畫成圖表。顯示在主執行緒等待多緒工作時的點,以圖型的方式顯示兩者之間的關係。

Unity Profiler自訂事件


==Profiler API支援C# 傳送Metadata==

在Unity內每個資源物件都會產生一個中繼資料檔Metadata, 現在可以通過Unity所提供的C# API來把裡面的變數放到Profiler上,方便觀察效能問題的可能性。這個功能也是預覽,整個2020週期都會持續改進。

Metadata支援


==紀錄GPU用除錯資訊==

以前只能通過Recorder API來獲取CPU效能分析資料,並自己用UI顯示出來。從2020.1開始,Recorder API開始支援從執行時獲取GPU資訊,方便分析渲染週期所造成的效能消耗。
題外話:會有這個功能是我們在開發SRP(Scriptable Render Pipeline就是新的渲染管線時的延伸產物)

GPU資訊搜集


==新 2D 模板==

Unity的2D工具在2020.1算是一個大躍進,許多原本都在預覽的功能在這一版本大多都轉正式了,而且還自帶了新的2D開發模板,如果是新專案開發,2020是一個非常好進入新2D專案研發的一個版本,那麼,整體來說有哪些功能呢?



==2D Sprite Shape 角落拉伸功能==

原本的2D Sprite Shape,就已經可以拉出不規則的形狀方便處理像是地形的工具,現在針對轉角又新加了一個拉伸(Stretched)的選項,可以把處理轉角的轉折。

Sprite Shape:Stretched選項


==2D Sprite Atlas 打包 v2 體驗版==

新版的Sprite Atlas打包流程可以支援用腳本把貼圖或是圖片打包成圖集了,這代表著未來專案的圖集管理會方便很多,這功能目前是體驗版。

Sprite Atlas V2


==2D 物理改進==

2D的物理也做了許多改進,像是Rigidbody2D的X軸和Y軸的約束器,現在不管鎖定哪一軸,都已經優化到幾乎0效能消耗。2D的碰撞在Simulation模式可以設定不同情境,比如物理的計算和渲染幀率同步,這代表著物理計算穿模問題會大大降低。

另外還有EdgeCollider2D現在也能控制起點和終點,方便處理和其他碰撞體之間的表面連續碰撞計算。

2D物理改進


==2D 動畫效能提升==

2D骨骼動畫的效能也有很大的提升,搭配前面介紹的Burst Compiler和Collections套件,就能夠在執行動畫變形時獲得很大的效能提升。

2D骨骼動畫


==2D Sprite Shape 網格烘焙==

現在2D Sprite Shpae也支援先把網格資料烘焙起來,這樣就能夠在執行時直接載入而不需要重新計算。當你有執行時從未修改過的靜態Sprite Shpae或者和Prefab一起使用的Sprite Shape時,就能省下許多CPU的執行時間。
需要注意的是,這樣的做法雖然省下運算時間,相對的就是用空間去交換,資料量一大場景大小也會變大。而且在執行期間是無法修改這些烘焙的Sprite Shape網格。

烘焙Sprite Shape網格的選項


==2D 鏡頭疊加==

跟UPR之前發佈的改進一樣,多鏡頭疊加是開發很重要的功能。
現在你可以在 SRP模式將多個鏡頭疊合成一個最終輸出效果,用以處理像是小地圖等等功能。

2D鏡頭疊加


==Package Manager改進==

Package Manager的更新,2020.1的套件安裝把預覽版的開關放到Unity設定內,這樣可以避免開發者在不知情的情況下安裝了預覽版的套件,說明和UI安排也都有改動。

預覽版的開關改到設定內


==背景工作進度窗口==

以往的Unity版本中,監控編輯器的背景執行是不容易的。

新的背景工作窗口能追蹤這些後台進程,看看Unity正在發生什麼事情,也會提供相對應的API讓程式人員做非同步處理。我們還對所有的進度條管理做了一個改進,未來所有的執行任何需要停止操作編輯器的工作,會統一用一個顯示窗口來顯示目前正在執行的工作,並查看細節。

背景正在執行的工作進度


==屬性頁面鎖定物件 Focused Inspectors==

全新的焦點檢查窗口讓你可以針對所選取的物件打開一個專屬的屬性檢視窗口。
以前是只有一個窗口,選了別的物件屬性視窗就跑掉了。現在你可以同時開啟許多不同的窗口來查看不同的物件。而且這個窗口不單可以顯示物件,也能鎖定顯示物件內的組件信息,螢幕夠大會非常方便。

可以鎖定物件的屬性窗口


==Presets改進==

2019有介紹過Presets功能,專門用來記錄當下物件屬性,在需要的時候可以把這個屬性套用到其他物件上,問題是每次都是紀錄全部屬性。從2020.1開始就可以只複製和應用特定屬性了。

Presets套用特定屬性


==FBX匯入改進==

FBX仍然是Unity支援最齊全的模型格式之一,從2020.1開始做了幾項修正:
1.支援來自Sketchup的網格導入自訂屬性
2.軸向轉換設定,一般來說Maya或3D Max 的軸向不是Y up,所以匯入Unity之前還要做轉向,有了這個設定之後會自動修正軸向,以後再也不會有模型轉進Unity跌倒的狀況發生了。
3.匯入PNG圖片時可以忽略咖碼校正的選項,這設定有助於不同平台之間貼圖的顏色一致性。

FBX改進


==移除Asset Store窗口==

我們從Unity內移除了一個編輯器框架,主要是這個框架原本是用來在Unity內開啟Asset Store窗口用的,但這項技術不但過時了,還引起了一些效能問題。因此我們在2020.1移除了它

移除這個框架之後的Asset Store窗口該怎麼辦?
Unity內將不再支援開啟Asset Store網頁的窗口,現在你會看到一個警告頁面。

你必須直接從網頁上購買套件,然後從Unity的Package manager內的My Assets就可以找到套件並下載使用。

從Package Manager的My Assets安裝套件


==Unity Remote 功能移除==

另外一個移除的功能是Unity Remote,Unity Remote是一個不用打包就可以把內容傳到手機上測試的一個工具,但同樣技術也過時了,未來我們會有更好的替代方案。


==Device Simulator 裝置模擬器==

剛提到Remote被Remove掉了,如果不是實機測試,可以試試這個Device Simulator裝置模擬方案,可以在編輯器內模擬手機設備。可以視為在開發環境用模擬器執行的概念。

Unity內的裝置模擬


==Cinemachine 2.5 轉正式,2.6 轉預覽==

這是一個處理運鏡的套件,各種遊戲或電影會用到的運鏡,包含一些像是鏡頭抖動、自動跟隨等等這個都能幫你搞定。我個人對這個系統的評價相當高。網上也有相當多教程,基本上就是搞定運鏡所有需要的功能。

Cinemachine 2.5正式版

==Animation Rigging動作系統==

Unity 2019開始導入的功能,以往我們把動作導入Unity之後發現有問題,通常都會請美術人員回到其他的DCC軟件像是Maya, 3D Max去修改,有了這個功能之後,就能在Unity對動作用約束器來微調動作。
例如我有個手拿著武器的動作位置錯了,這時我就可以把手的位置約束到刀柄就可以了。

你可以將骨骼動作烘焙起來並裝到約束器上,這樣可以對關鍵幀進行編輯,也可以將約束後產生的動作烘焙到骨架上,執行時效能就不會消耗太大。

簡單來說,未來你可以在Unity內微調各種動作了。

Animation Rigging套件


==Kinematica 動作系統預覽==

基於”動作匹配”概念的次世代人物動作系統,能在執行時產生高品質的人物動作。
不像傳統的做法,需要在Blend Tree或狀態機安排兩個動作之間的切換,只要給予一個骨骼姿勢和所需的軌跡運動,他就會去演算出慣性的動作位移。

新的Kinematica人物動作系統

==UI Toolkit==

原本的UIElements更名為UI Toolkit,這樣比較直覺,一看就知道用來打造編輯器工具UI的,不管是編輯器UI或是執行時的UI他都可以做到。因為是設計給非程式人員的工具,他會有許多方便的功能是不用寫程式的。

UI Builder + UI Toolkit


==XR設備的流程改進==

我們調整了啟用XR設備的選單內容,現在比較直覺好用了。

新的XR開關選單


==AR Foundation 3.1==

AR Foundation和製作AR內容的開發者比較有相關,他跟Unity一樣主打一次開發,全平台發佈的概念。意思就是通過AR Foundation可以開發一個AR內容,但全部Unity支持的AR設備都可以發布。

AR Foundation 3.1支援表


==URP: 鏡頭疊加==

URP的多鏡頭疊加之前有介紹,可以讓你的3D物件和2D UI連同特效一起疊合

URP:多鏡頭疊加

==Lighting Setting Assets 光照設定文件==

全新的光照設定檔,可以讓你把不同光照設定存下來,未來你可以調好各種不同環境光照,比如陰天、晴天、雨天、室內、室外、夜晚等等,並在需要的時候載入。

以往的光照資訊是跟著場景的,從2020開始,照明設定會變成獨立的設定檔,存儲預先計算的全域光照資料相關所有資訊。

這樣的好處是A場景的光照設定也能給B場景用,未來在場景氛圍的製作會更簡單。

新光照設定檔


==烘焙貼圖UV計算改進==

美術人員在拆UV 貼圖時很重要的一點,就是如何善用空間把貼圖塞的越密越好,這在光照烘焙也是一樣的道理。但是自動計算的光照圖以往可能會算出非預期的結果,比如太多空白。

未來在Unity模型導入時,就是Model Importer會多一個Calculate的選項可以勾選,用意就是把這些模型先納入光照貼圖計算考量,拆平貼圖並計算邊距,求得最少空白的貼圖結果,也不會有UV重疊的問題。可以看到右圖是有打開選項的結果,比左邊的乾淨許多。

計算UV優化


==全域光照烘焙的採樣改進==

光照貼圖的計算簡單來說就是模擬光的路徑追蹤,因為不同光線之間的路線關聯性複雜,以往的演算法偶而會因為這些特性產生不正確的結果或是躁點。
Unity 2020.1在光照路徑計算的方法做了許多改動,預設的情況已經啟用了這個設定。可以比較出和舊版有很大的差異,烘焙時間更短結果也比之前好很多,可以注意烘圖從滿是噪點到完成的時間變得更短。

原本的採樣數量限制也從原本的10萬個提升到10億個。這代表著光線原本能模擬的環境更真實,一般遊戲10萬個採樣,市內設計專案10億個採樣能烘出真實的結果,當然採樣越多計算時間越久是不變的。

支援10億個採樣


==全域光照:支持俄羅斯輪盤烘焙模式==

新的“俄羅斯輪盤”烘焙選項可以加快烘焙速度,他會依照情況自動決定光線最佳路徑。
這個演算法會考慮場景中的全域光照路徑,當光線在深色表面反彈時,光線被吸收的程度越大,光線的投射就會結束的更早。這樣不但可以減少整體烘焙的時間,對於最終的烘焙品質影響也不大。

新的俄羅斯輪盤演烘焙


==光照貼圖支持Cookies==

Cookies在Unity內意思是一種光照時指定的貼圖圖形,很適合用來模擬光線通過物件所產生的陰影照明,增加真實感。
以前的Cookie不支持SRP。從Unity 2020.1開始,不管是CPU或是GPU的光照貼圖都支持Cookie,這意味著混合模式的Cookie計算將會一起考慮直接光源和間接光源。

Unity Cookie


==HDRP 光追支持網格特效==

HDRP現在支援光追的進度已經到可以處理動態的網格光追處理,目前是預覽版。

光追 vs HDRP


==GPU貼圖串流功能預覽版==

當你搭配HDRP使用Shader Graph時就能夠使用這個”串流虛擬貼圖”功能,當場景內有許多高解析度的貼圖時,可以用串流的方式來減輕GPU記憶體的壓力,以及加速貼圖載入的時間。
他的原理是通過將貼圖拆分為小圖塊,然後依照需求將這些小圖塊逐步上傳到GPU記憶體內工作。

這個功能目前是預覽版。

串流GPU貼圖功能


以上就是2020.1整理的功能說明
希望對你的專案開發有幫助
保持關注我們!