2020年8月2日 星期日

Unity 2020.1 更新亮點介紹

原文:Kelvin / 達哥

大家好!歡迎回到Unity官方頻道
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整理的功能說明
希望對你的有幫助
保持關注我們!

2020年6月22日 星期一

Unity 2019.4 LTS功能介紹

Unity 2019.4 重點功能詳解
作者:Kelvin Lo


大家好!2019.4已經發佈了,趁這個機會,我想要跟各位聊聊這一版LTS的新功能以及具體的LTS版本建議用法。

什麼是LTS呢?雖然官方有許多文件都有解釋過什麼是LTS(長期維護版本)了。但為了有些人還是不明白什麼是LTS版本,我還是稍微以我的角度說明一下。

所謂的LTS就是當新年度版本開始時(現在是2020.1),把去年的版本號+.1做結尾並改名LTS的版本(這裡是2019.4 LTS)。這個2019.4 LTS版本特色是會持續維護長達兩年的時間,因此最適合使用這個版本的專案,就是在未來一年準備發佈的產品。


圖1 - LTS圖表

長期維護的意思是如果在2019.2找到了一個Bug,Unity會修復的版本是2019.2本身和2019.4,也有可能只會在2019.4修復,其他版本不會修復。主要這麼做可以讓問題的修復集中在.4管理,提升LTS版本的穩定性,對開發專案也比較友善。

決定要用哪一年的LTS當然就跟專案時程估算很有關聯,如果你的專案預估在2021年1月完成,那發佈時的LTS版本就建議是2019 LTS,因為2020 LTS還沒出來。所以如果專案完成預計在2021年12月,當然目標就是2020 LTS

要注意的是,現在的LTS版本都會落在5, 6月左右發佈,主要原因是Unity每年更新週期有4版,也就是.1 .2 .3 .4LTS,我們預期在下個週期開始,將改為.1 .2 .3LTS週期,未來期望新年度版號在Q1就進版。


圖2 - 新年度LTS計畫


接下來細聊到底2019.4有哪些強化,除了了解有哪些新功能之外,也可以用來評估要不要升級的參考。


圖3 - 2019.4 亮點功能

從這個表可以看出,2019.4 LTS改進的部分還是挺多的,我們一個一個來細看


版本控制(Version Control)體驗改良
大型專案的版本控制至關重要,如果你是用Github,特別是Perforce做版本控制,2019LTS改進許多UIUX體驗,現在Perforce斷線時會自動連回了。

圖4 - Version Control


Asset Import Pipeline V2
資源導入流程以往需要耗費大量時間等待,隨著專案越大越複雜,等待的時間就越長。2019 LTS,導入流程已升級到第2版,它與新的Accelerator(新的本地緩存服務)一起用為更可靠,總之結合起來,這將顯著加快平台切換和導入時間。

圖5 - Asset Import pipeline V2


Nvidia PhysX 升級到4.1
非DOTS的物理運算用PhysX能更精確、更快更可靠。尤其在布料模擬採用了新的NvCloth技術,能夠得到更好的效果。針對DOTS框架的物理也可以研究Havok或Unity的DOTS兼容物理系統。

圖6 - Nvidia PhysX 4.1


IDE支援
程式應該會對此感到開心,2019LTS版的預設整合開發環境更新為Visual Studio 2019了。而且我們將其他家的IDE開發環境,像是Visual Studio, VS Code, JetBrains Rider都移到Package manager方便安裝管理了。

圖7 - IDE支援


增量式GC(Incremental Garbage Collector)
新的增量式GC通過在多個框架上分配工作負載,這代表增量式GC的執行會更頻繁但更快的中斷,進而降低因為處理GC造成性能尖峰,當然就降低了卡頓的機率。

圖8 - Incremental GC


Console窗口改良
Console視窗的資訊現在可以點擊,並轉到發生問題的程式碼位置,這會讓除錯更容易。

圖9 - Editor console


DOTS的準備
雖說2019LTS的DOTS(資料導向堆疊框架仍然是預覽版,但是它已經支援了DOTS的動畫、物理、網絡機制和實時除錯(Live Link)功能,如果你不能升2020但又希望研究DOTS,就從2019LTS開始研究吧。
值得一提的是,DOTS體系內的Burst編譯器倒是從預覽版轉為正式版了,對於Job System能直接給予非常明顯的性能優化效果。

圖10 - DOTS


編輯器程式碼的TypeCache API
以往我們點選Play的時候,其中一個很耗時的C#處理是查找Unity套件或是用戶自定義工具會使用到的C#屬性。 通過API暫存這些類別資訊,將使呼叫播放的速度變快。

圖 - 11 TypeCache


Enter Play Mode option
除了用程式碼優化播放速度,本身Unity每次按Play也都是重新載入場景,如果每天你要按play一百次,相當於浪費了一半的時間在執行重複加載的行為。你可以從Project Settings > Editor 內找到Enter play Mode選項,設定不用每次play都重新加載場景而是使用快取,在大量小型修改的情況開發效率能提升2倍以上。

圖 12 - Enter play mode


Scriptable Build Pipeline(腳本式打包管線)
可以自訂打包流程。SBP相當於把原本C++層的打包流改為C#,並自帶一個預先定義好的Asset Bundle打包流程,能降低打包的時間。對於每天有非常多打包工作的團隊來說,定義自己專案的打包流程甚至是Asset Bundles的增量打包管理都將會方便許多。

圖 13 - Scriptable Build Pipeline


Serialization 改良
新的SerializeReference屬性可以將C#類序列化為引用(references)類別而非值(values),這代表著您可以跟普通的舊C#物件相互引用,進而簡化了程式碼表示和管理複雜的數據結構。例如,List <IAnimal>的內容可以包含dogs(class Dog:IAnimal {})和cats(class Cat:IAnimal {}。標記為要序列化的欄位現在可以表示null值。在以前,序列化帶有null值的欄位會引發該類型的默認構造函數對其進行反序列化。更多信息請到https://docs.unity3d.com/ScriptReference/SerializeReference.html 查看。

圖 14 - SerializeReference


.Net 4.x
.Net 3.5的運行核心已經從LTS移除,任何採用3.5的專案都會自動改為4.x。如果因為任何原因必須使用3.5,可以改用2018 LTS。

圖 15 - .Net 4.x


IL2CPP改良
整體性能提升20%,Script debugging選項開啟時,執行效能更好。

圖16 - IL2CPP


Input System
遊戲操作設計系統整個被重新設計了,新的輸入設計觀念改為先設計主要遊戲操作玩法(比如上下左右移動),然後綁定邏輯到各種不同的平台控制器,比如 PC, XBOX, PS5,移動平台觸控和 VR設備也都考慮在內了,簡單來說就是手柄按鈕設計一次,發佈對應不同平台。

圖 17 - Input System


Profiler改良
除錯窗口現在能看到更多的除錯信息,現在可以在配置設置想要一次看到的除錯數300至2000幀。在打包視窗或BuildPlayer API中為所有Player啟用深度分析支援(Deep profiling),此外,用戶還可以為指定Player動態打開或關閉深度分析。禁用深度分析時,分析數據時就不會有Deep Profiler掛接到Player所引起的額外開銷。

圖 18 - Profiler


AR Foundation
AR Foundation解決了兩個主要問題:不同平台要重複設計專案。AR Foundation就好像Unity一樣針對AR專案提供一次開發,自由發佈的概念。如果某個功能在一個平台上可用,而在另一個平台上不可用,跨平台開發將會變得很麻煩。AR Foundation利用他中繼層的優勢,可以輕易的對每個平台功能做適配,不需要重建專案

圖 19 - AR Foundation


URP/HDRP支援VR
HDRP何時支援VR一直是最常被問的問題,2019 LTS的HDRP已經開始支援VR了

圖 20 - HDRP VR


XR Plug-in Framework
如果你是一個XR設備製造商,那這對你絕對是好消息。以往你必須自行撰寫For Unity的SDK,現在通過了XR Plug-in框架就能輕易整合到Unity裡,連同跨平台都一併解決了。此外,Unity編輯器內也多了XR套件管理(XR Plug-in Managerment”設置,未來啟用不同的XR設備會變得容易許多。

圖 21 - XR Plug-in


Optimized Frame Pacing for Android
這是Unity與Google的Android遊戲和圖形團隊合作開發套件,可以使Android設備的幀分配的差異較小,從而提供一致的幀率和更流暢的遊戲體驗。

圖 22 - Optimized Frame



Scripts-Only Build Patching(Android)
針對Android平台製作自定義增量包的工具,大大降低迭代時間。此工具只支援Android。

圖 23 - Scripts-Only


Android Logcat 整合
整合從Android來的除錯資訊到Unity編輯器,可以直接在Unity內查找問題。

圖 24 - logical


Android App Bundle的APK大小檢查
Android App Bundle是Android在Google Play發佈的工具,它提供了一種更有效的方式來構建並發佈應用。讓你更輕鬆包出較小的包,提高安裝成功率和減少卸載。APK大小檢查可在打包過程完成後立即查看,包含APK的組成和APK的大小。

圖 25 - APK Size


請求式渲染(On-demand rendering)
當你等待其他玩家加入遊戲時,螢幕上通常什麼也沒有發生。通過這個功能就能讓這種情況發生時放慢渲染速度節省幀速率,從而節省了用戶的電量與提升性能。


Mobile notifications
手機推播通知是很多人詢問的一個功能,以往都是通過第三方套件來實現,現在Unity也可以做推播功能了喔。

圖 26 - Mobile notifications


一系列的2D工具轉正式版
- 2D Sprite Shape, 2D Tilemap Editor方便建構2D世界 

圖27

- 2D Animation建構平順的2D骨架動畫 

圖28

- 2D PSD Importer和2D Pixel Perfect提供穩定的像素品質 

圖29

- Lost Crypt 2D展示工程兼容2019LTS 

圖30


Camera 多鏡頭堆疊
現在SRP支援多鏡頭合成一個畫面了。

圖31


Custom Render Passes(自定義渲染通道)
2019 LTS現在可以製作自訂的渲染流器,發送渲染信息到自訂的渲染通道來實現風格化渲染器或是Forward+ / Tile / Clustered渲染。這樣可以基於Unity的渲染注入自定義的渲染,來個畫風突變。

圖 32 - Custom Render Passes


HDRP亮點改進
- Arbitrary Output Variables(AOV) API,支援只導出場景內的材質屬性、光照資料、深度資料。
- 動態分辨率 在硬件的支援下,實現實時改變畫面分辨率並保有良好的遊戲體驗
- Madcat除錯監看模式 用簡單的環境紋理替換對象的材質和照明。此模式對導航和獲得場景感很有用,無需設置場景照明。

圖33 - HDRP亮點


HDRP PostProcessing
現在後期特效已集成在HDRP中,加快工作流程和效能。可以使用一組標準物理設置(焦距,光圈等)來控制諸如景深或曝光等效果。對比度自適應銳化(CAS)放大效果。

圖34 - Post Processing


Scriptable Render Pipeline Batcher(腳本化渲染管線批處理器)
SRP批處理器是一套為SRP所訂製的渲染循環,通過使用相同著色器變體的許多材質來加快場景中的CPU渲染速度。並將圖形繪製到屏幕的過程。
支援平台目前有:Windows DirectX 11,Vulkan,OSX Metal,iOS Metal,OpenGL 4.2及更高版本,Open GL 4.2及更高版本,Windows DirectX12,PlaStation 4,Xbox One DirectX 12,Nintendo Switch

圖 35 - SRP Batcher


HDRP 針對 Shader Graph 的改良
- Render States現在改到Shader Graph裡的Material裡,意味著現在可以在一個材質球上直接指定為不透明(opaque)或透明(transparent)。

圖 36

- 加入了新的Hair Master Node,未來製作毛髮相關的Shader將會更得心應手。

圖37

Shadow Layers
現在Light Layers系統的Shadow Layers選項允許你將陰影與照明分離。在Shadow Map設置中啟用此功能後,遊戲物件即使在看不到光線的情況下也可以投射陰影,反之亦然。您還可以使用Shadow Tint更改陰影顏色。

圖38 Shadow Layers

VFG 和 Shader Graph
現在你可以在Visual Effect Graph裡面集成Shader Graph的著色結果,實現更直觀的效果。

圖39

新的地形工具
- Unity重寫了新的地形工具,大量的新功能包含地形繪製工具、地形紋理繪製 
- 全新的地形製作工作流能在繪製地形時,也實時對光照、物理甚至導航直接產生運算。 

圖41

GPU烘焙光照
烘焙品質更好、支援對環境照明的多重採樣、支援NVIDIA OptiX降噪、整體采樣性能提升。

圖42


環境多重重點採樣(Multiple Importance Sampling)
一種在Cubemap/HDRI中針對重點區域採樣的新方法,採用這種技術可以避免將大量GI射線發射到全區域,而是將它們聚焦在例如亮點的重點區域(例如太陽)。



圖43

Light Probes與場景加載
以往加載場景時Light Probes是無法合併的,2019 LTS開始,加載的場景之間合併Light Probes已經實現。意味著將大型場景拆成許多小場景,動態加載並合併所有探針並重新網格化,就可以實現無縫地圖了。

圖44

快速查找(Quick Search)
現在可以在編輯器內快速查找所有關鍵字物件,這會關聯到物件、資源、設定、選單物件甚至腳本。

圖 45 Quick Search

Presets管理
Preset可以儲存當前物件設置,並在套用在其他物件上,遇到有大量物件設置複製轉移需求的狀況非常好用。

圖 46

快捷鍵管理(Shortcut Manager)
現在可以自定義Unity編輯器內的快捷鍵了。

圖47

Prefab編輯
以前編修Prefab物件必須進入編修模式,現在可以直接在Inspector窗口直接編修Prefab物件了。


UI Builder
UI Builder是一套能在Unity內不用寫程式,通過拖拉製作出UI的工具,他是針對Unity編輯器的工具,並不適用於遊戲UI。

圖49

Package Manager一些改動
現在你可以在Package Manager內加入存在GIT上的套件,通過URL連結來直接安裝到Unity,很適合用來製作公司內部工具套件。 

圖 50

現在也可以通過Package Manager來統一管理你的Asset Store購買的資源,整體體驗改善很多。
 
圖51


調適分析器(Profiler Analyzer)
Profile Analyzer可以匯總並可視化來自一組Unity Profiler的數據,多個不同幀的信息比對,以幫助你從更廣的角度找出性能問題。

圖52


以上就是Unity 2019 LTS 的亮點整理
這麼多的改動,只為了給開發者一個良好的開發工具,並協助你成功

感謝這些年支持Unity的開發者們,希望你們都能開發順利!