Unity 2018.1 標記著新循環的開始,帶來我們核心技術的重大升級,這使得美術人員、開發人員以及工程師們能夠去展現他們的才能並有效率的協作,以使他們的 AAA 夢想成真。
取得 Unity
我們很高興的在 Unite Berlin 分享這個最新消息!從這裡獲取所有的活動詳情。從首頁加入我們、簡單的訂閱我們的 YouTube 頻道或在 Facebook 關注我們,就可以觀看到主題演講直播。
讓我們從幾個亮點開始,然後你就可以深入了解所有功能的細節。以下首先來介紹兩個亮點,可編寫腳本的渲染管道(Scriptable Render Pipeline)以及 C# 工作作業系統(Job System),作為這兩個主要功能的第一個版本,它們將繼續發展,以協助你解放漂亮的圖形並提升 Unity 運行時的效能。
在你瀏覽新功能列表的同時,你可以在這裡下載 Unity 2018.1。
可編寫腳本的渲染管道(Scriptable Render Pipeline:SRP)
在 Unity 2018.1 的預覽版推出,這個新的可編寫腳本渲染管道(Scriptable Render Pipeline:SRP)將現代硬體和 GPU 的強大功能直接交到開發人員和技術美術人員手中,而不用去消化數百萬行的 C++ 引擎程式碼。
可編寫腳本渲染通道(SRP)經由 C# 程式碼和材質著色器使它能夠輕鬆的自定義渲染管道,給予你最大程度的控制,而無需面對所有編寫或修改一個完整 C++ 渲染管道的複雜性與挑戰性。
我們還推出了兩個開箱即用的渲染管道,以滿足你的需求。適用於具備 AAA 志向的開發者的高精度渲染管道(High-Definition Render Pipeline:HD RP),以及適用於那些尋求結合美觀和速度的輕量級渲染管道(Lightweight Render Pipeline :LW RP)並且還為行動裝置與類似的平台最佳化電池壽命。
C# 工作作業系統(Job System)與實體組件系統(Entity Component System:ECS)
結合新的程式設計模型(Entity Component System),新的執行期系統讓你能夠充分利用多核心處理器,而不用在程式設計方面頭痛。例如,你可以使用額外的馬力去添加更多效果和複雜的事物到你的遊戲,或者添加 AI 來使你的創作更豐富並更加身歷其境。
關卡設計與著色器
Unity 2017.x 採用了新的功能來促進團隊的美術人員、設計人員以及開發者們共同建設的體驗。我們增加了像是時間軸(Timeline)、電影機(Cinemachine)以及能夠順暢的與 3DS Max 及 Maya 這類數位內容創作工具一起往返作業的新 FBX 匯入器(FBX Exporter)。
關於 Unity 2018.1,我們將透過使它不用編寫程式就能夠建立關卡、電影內容以及遊戲程序來繼續努力來協助美術人員、設計人員及開發人員們更加高效率的進行協作。例如,像是 ProBuilder/Polybrush 以及新的視覺化著色器圖形(Shader Graph)這些新工具,提供了直覺的方法來設計關卡以及不需要程式設計的技能就能建立著色器。
組件包裝(Packages)
Unity 2017.2 採用了組件包管理器(Package Manager),這是一個底層核心模組化系統,能夠在你的專案中動態載入和更新 Unity 功能的 API。Unity 2018.1 以新發佈的組件包管理器使用者介面(Package Manager User Interface)、Hub 以及專案模板(Project Template)為基礎建立。所有這些都能夠幫助你更快、更高效的啟動新專案。
組件包(Packages)推出幾個功能。其想法是要使 Unity 更加模組化,以便讓我們更容易在現有基礎上發佈功能。
我們使用預覽(Preview)標示這些新功能來表明它們還不建議用於生產,也還沒有完全支援。你可能在之後的製作中想要使用到,預覽(Preview)如同個別的模組化包裝在早期階段為你提供了更新、修改與試驗功能的機會。
Unity 2018.1 中的新功能:所有細節!
圖像(Graphics)
可編寫腳本的渲染管道(Scriptable Render Pipeline:SRP)(預覽版)
Unity 的內建渲染模式為創建各種遊戲提供了強制的管道(Compelling Pipeline)。然而,隨著平台的發展與不斷增長的多樣性,我們想要提供更強大且更彈性的渲染管道。
隨同 Unity 2018.1 一起推出的預覽版,新的可編寫腳本渲染管道(Scriptable Render Pipeline:SRP)將現代硬體和 GPU 的強大功能直接交到開發人員和技術美術(Technical Artist)的手上,而無需消化數百萬行的 C++ 引擎程式碼。
SRP 讓你能夠經由 C# 程式碼和材質著色器輕鬆的自定義渲染管道。如此為你提供了最大程度的控制,而沒有編寫或修改完整 C++ 渲染管道的複雜的東西和挑戰。
Unity 提供幾種內建的渲染模式,足以滿足大多數較小型的遊戲。然而,SRP 讓你能夠超越隨之而來的開箱即用功能,根據你的特定需求訂製渲染程序,並為你的目標平台的特定硬體改善效能。
SRP 在 Unity 中提供新的渲染方法。我們將從黑箱(Black-box)模型到大多數事物都是使用 C# 的階段。這是一個使用者能夠根據他們的需求編寫他們自己的管道或自定義模板的更加開放的系統。除了內建的渲染引擎之外,我們還在 18.1 中發佈了兩個初始管道。
死者之書(Book of the Dead)是個第一人稱互動展示,展現使用新的可編寫腳本渲染管道(Scriptable Render Pipeline)時能夠做到的東西。
在我們先前的部落格文章中可以了解到有關可編寫腳本渲染管道(SRP)的更多訊息以及如何入門。
高清晰度渲染管道(High Definition Render Pipeline:HD RP)(預覽版)
適用於個人電腦和遊戲機上的高端視覺效果
HD RP 是個支援平台有限(PC DX11 以上、PS4、Xbox One、Metal、Vulkan - 還未支援 XR)的現代渲染器。
HD RP 以高端個人電腦和遊戲機並優先考慮令人驚嘆的、高清晰度視覺效果為目標。此處要權衡的是 HD RP 不能在功能較弱的平台上運行,而且將有一些學習和再加工的需求。
其渲染器是個混合 Tile/Cluster Forward/Deferred 而成的渲染器,具有與 Forward 和 Deferred 同等的功能。其功能包含體積照明(Volumetric Lighting)(正在進行中)、聯合照明(Unified Lighting)(為不透明/透明/體積提供相同的照明)、新的光源形式(點光源現在有線條和矩形選項,聚光光源現在有盒子和椎體選項)以及貼花(Decal)。
輕量級渲染管道(Lightweight Render Pipeline:LW RP)(預覽版)
較少的繪製調用(Draw Call)
LW RP 是個使用較少繪製調用的單通道前向渲染器。與使用內建渲染管道相比,使用 LW RP 將會減少你的專案上的繪製調用次數。儘管它支援所有平台,但它是手機和如 XR 般渴望效能的應用程式的理想解決方案。這裡要權衡的是,與 HD RP 一樣,切換到新的 SRP 工作流程需要學習曲線,執得注意的是,某些第三方工具還未與之相容。
LW RP 有它自己的渲染程序,因此需要用它來編寫著色器。我們已經開發了新的標準著色器(Standard Shader)套件,位於材質的著色器下拉選單的輕量級管道(Lightweight Pipeline)群組下。其中包含標準物理基礎渲染(Standard PBR)著色器、簡化光照模型的非物理基礎渲染標準(Non-PBR Standard)著色器、標準地形(Standard Terrain)著色器以及標準無照明(Standard Unlit)著色器。值得注意的是,Unity 的所有現有的無照明(Unlit)著色器已經與 LW RP 一起運作。這包含舊的粒子、UI、天空盒以及精靈圖(Sprite)著色器。
使用組件包管理器(Package Manager)下載 LW RP,並透過閱讀我們先前的部落格文章了解更多與 LW RP 相關以及如何入門的訊息。
模板(Templates):快速啟動你的創作進程
模板以常見最佳實踐為基礎,針對專案是 2D、3D、高端平台(如桌機/遊戲機)或輕量級平台(如手機)來為專案提供預先選擇的設置。如此,你就不必擔心關於基礎設置的部分,並且擁有更好的開箱即用體驗。
模板附帶最佳化 Unity 專案設置,以及一些預置元件和資源來協助你開始。當你開始一個新的專案時,你不必去擔心要更改 Unity 中許多預設的設定,因為它們已經針對目標遊戲類型或視覺保真度級別進行了預設。
這不僅使它更快上手,而且也向你介紹了你可能未發現的設置以及新的功能,如可編寫的渲染管道(Scriptable Render Pipeline)、著色器圖表(Shader Graph)以及後製堆棧(Post-Processing Stack)。
以下列出你可以選擇的各種模版:
- 2D:
對於 2D 專案,使用 Unity 內建的渲染管道。
為 2D 專案配置專案設定,包含圖像匯入、精靈圖包裝器(Sprite Packer)、場景視圖、照明和正交攝影機。
- 3D:
對於 3D 專案,使用 Unity 內建的渲染管道。
為 3D 專案配置專案設定,包含更新,例如設置預設的色彩空間為線性(Linear)以及預設光照貼圖技術(Lightmapper)為漸進(Progressive)。
- 具備附加功能的 3D(3D with Extras)(預覽版):
與 3D 模板類似,但是具有後製處理、預設和示範內容的額外好處。
- 高端(High End)(預覽版):
適用於支援 Shader Model 5.0(DirectX 11 及更高版本)的平台上的高端圖形。此模板使用 HD RP。
這個模板使用 HD RP,這是一種現代渲染管道,包含進階材質類型以及可配置的混合圖塊(Tile)/叢集(Cluster)延遲(Deferred)/向前(Forward) - 照明架構。 - 輕量級(Lightweight)(預覽版):
專注於效能以及主要使用烘焙照明解決方案的專案。這個模板使用 LW RP,這是一種每個物件都具有照明剔除(Light Culling)功能的單通道向前渲染器。使用 LW RP 將為你的專案減少繪製調用(Draw Call)數量,使其成為低端硬體的理想解決方案。
所有的光源都在單通道中著色,而不是每個像素光都另外通過。 - 輕量級 VR(Lightweight VR)(預覽版):
專注於當開發主要使用烘焙照明解決方案的 VR 專案時的效能。這個模板使用 LW RP 並且需要運行 VR 設備。
著色器圖表(Shader Graph)(預覽版):讓每個人輕鬆編寫著色器
使用 Unity 編寫著色器在傳統上是具有一些程式設計能力的人的領域。在 2018 中,我們正在改變這件事!
Shader Graph 讓你能夠使用一種設計師工具來視覺化建立你的著色器-不用寫任何一行程式碼。反而是使用輕鬆拖放的做法在圖表網絡中建立和連接節點。你可以立即看到結果然後重複操作,從而使新的使用者們可以輕鬆地參與著色器創作。
著色器圖表系統:
- 旨在適用於 LW 渲染管道(HD 渲染管道即將推出)。
- 能夠擴充來適用於任何自定義渲染管道。
- 擁有能夠編寫自定義節點的開放式架構。
如果你想要瞭解更多如何開始使用著色器圖表的相關訊息,我們強烈建議你查看 GitHub 上的著色器圖表範例庫以及我們的著色器圖表教學影片,
漸進光照貼圖技術(Progressive Lightmapper)
Progressive Lightmapper 為烘焙照明提供了出色的成果,並為照明美術人員改善工作流程,使他們能夠在 Unity 編輯器中透過提供漸進更新來快速又可預測的重複進行。
雖然最初在 5.6 版本中是做為「預覽版」功能來發佈,但它在每個隨後的版本中都有更多的功能已經最佳化。在 2018.1,它退出預覽模式並且引入針對烘焙大型場景的記憶體最佳化。
截至 2018.1,Progressive Lightmapper 還會經由自定義烘焙 API(Custom Bakes API)協助大量的用戶們。這使得能夠在烘焙解決方案中存取資料,以開發新的照明工具,例如在死亡之書(Book of the Dead)中用來建立第一人稱互動體驗的自定義遮擋探測(Occlusion Probes)系統。
後製處理堆棧(Post-Processing Stack)v2
後製處理堆棧(Post-Processing Stack)讓你能夠使用專業級控制將逼真的濾鏡套用於場景。對美術人員友善的介面使它能夠輕鬆的建立並微調高品質的視覺效果,以實現戲劇性和逼真的效果。
在 2018.1 測試版中,我們已經添加了許多要求的功能並盡可能修復了許多錯誤。我們也透過添加手機專用路徑、卷(Volume)混合以及用於自定義使用者效果的完整框架來改善我們的 XR 支援。
這個版本的後製處理堆棧(Post-Processing Stack)將做為許多即將推出的資源包中的第一個,這將為使用者提供資源商店(Asset Store)包裝的插件靈活性,同時具備 Unity 核心功能的更新能力。
在 2018.1 中,後製處理堆棧(Post-Processing Stack)已經過改善,具備更高品質的效果、使用強大覆蓋堆棧(Override Stack)的自動卷(Volume)混合,以及靈活的框架來編寫和分發你的自定義效果。同時與輕量級渲染管道(LW RP)、高清晰度渲染管道(HD RP)以及內建的渲染管道相容。
PS4 的動態解析度(Dynamic Resolution)
動態解析度(Dynamic Resolution)最初是在 2017.3 的 Unity for Xbox One 中採用。現在我們為 PS4 帶來了相同的功能。該功能協助使用者動態管理他們的 GPU 安排。例如,在某些情況下,可能希望遊戲達到高解析度(如 4K)。然而,在其他時候,降低解析度以使 GPU 效能增加會更適合。
使用者可以從 Unity 編輯器中選擇哪些選染紋理和攝影機將參與動態解析度(Dynamic Resolution),然後在執行期從單一腳本呼叫來縮放這些項目的解析度。這結合了透過影格計時管理器(FrameTimingManager)提供的訊息,使得使用者能夠產生透過改變他們所選擇的渲染目標解析度自動平衡他們的 GPU 負載的腳本。如果動態解析度(Dynamic Resolution)
沒有使用,系統內部對於渲染目標不會使用比被配給的更多的記憶體,而且改變解析度時不會產生顯著的 CPU 效能開銷。
注意:在採用動態解析度(Dynamic Resolution),使用者應確實檢查權限是否可以成為 GPU 綁定(GPU-bound),因為這在 CPU 綁定(CPU-bound)情況並沒有任何好處。
GPU 實例化(GPU Instancing):支援全域光照(GI)
GPU 實例化(GPU Instancing)現在支援為每個實例取得全域光照資料。這可以透過允許 Unity 渲染循環到自動的批次處理光探測照明(LightProbe-lit)或光照貼圖照明(Lightmap-lit)物件來實現,或者透過手動呼叫新的 API 來將與場景一起烘焙的光探測(LightProbe)資料提取到稍後要用於實例化渲染的材質屬性塊(MaterialPropertyBlock)物件中來實現。
光照貼圖 UV 交疊可視化(Lightmap UV Overlap Visualization)
此功能解決了關於不需要的偽影問題。這種情況的發生,是當光照貼圖被劃分為多個圖表並進行採樣以及紋理像素值從一個圖表滲透到另一個圖表時(如果太接近),會導致不需要的偽影。
新的 UV 交疊可視化(UV Overlap Visualization)功能讓你立即查看到受此問題影響的圖表/紋素。它會自動辨識交疊,讓你能夠在解決此類問題時,做出更明智的決定(例如,增加圖表邊距)。
Metal 的曲面細分(Tessellation for Matal)
Metal 曲面細分(Tessellation for Metal)是一種在使用低品質網格時提高視覺保真度的方法。它遵循使用外殼(Hull)/域(Domain)著色器的 DirectX 11 硬體曲面細分規則。使用此功能的現有 HLSL 著色器經過交叉編譯並透明地轉換為 Metal 計算著色器(Metal-compute Shader),旨在使其在平台之間無縫的過渡轉換。(目標圖形 API 有不同的底層原生方法來實現曲面細分。)
其它圖像改進與新功能
天空遮蔽(Sky Occlusion)在 2018.1 以實驗性功能發佈。它通過採用來自天空盒的光照做為環境遮擋計算的一部分來提高圖像保真度和真實感。
我們還添加了一個新的試驗性 C# 介面來傳遞光照訊息給全域光照烘焙(GI-baking)後端。
2D
物理:2D
我們現在能夠使用設備上的所有 CPU 核心來執行剛體(Rigidbody)模擬。這包括執行新聯繫物的探索、執行離散和連續區解算器以及廣泛同步的能力,全部都使用原生工作作業系統(Job System)。要開始使用,只要到 2D Physics 設置並在「Job Options(Experimental)」下勾選「Use Multithreading」。我們還提供了幾個基於工作作業(Job-based)的物理測試專案(這個功能開發期間使用),可以在 Github 上找到。
2D 精靈圖形狀(SpriteShape)預覽版(資源包)
精靈圖形狀(SpriteShape)是一種精靈圖(Sprite)編排與世界構建工具,可以根據所給定的角度範圍沿著形狀的路徑鋪貼精靈圖(Sprite)。另外,形狀可使用鋪貼紋理來填充。
精靈圖形狀(SpriteShape)功能的主要優點是具備自適應或連續性鋪貼精靈圖(Sprite)能力的貝茲樣條路徑的強大結合。當連續性鋪貼時,被分配到給定角度的精靈圖(Sprite)會自動地切換。
該功能現在做為預覽包提供,你可以在此處獲取我們的示範專案和文件。
前往我們的論壇,讓我們了解你的體驗。告訴我們這是如何適合你的工作流程或提升你的專案?運作是否順利?哪裡不足?
2D 動畫系統預覽版(資源包)
我們正在進行一個新的 2D 動畫系統,該系統將會分多個階段發佈,現在已預覽版資源包推出。
在其第一個版本中,我們集中於綁定骨架動畫的精靈圖(Sprite)開發工具上(雖然相似,但它不是整合 Anima2D 到 Unity)。
該工具包含:綁定姿勢(Bind-pose)編輯,手動網格曲面細分(Mesh-tessellation)和蒙皮權重(Skin-weight)繪製。運行時組件將它們連接在一起以帶動精靈圖(Sprite)變形。我們的目標是讓使用者能夠創建由單一個精靈圖(Sprite)組成的簡單動畫角色。
正在進行的項目
我們將繼續在此基礎上構建新功能和工作流程。這可能包括一些工具,可以更有效地創建多精靈圖(Multi-sprite)角色,並支持更大產量的工作流程。這將讓你能夠創建複雜的多精靈圖(Multi-sprite)角色,並可能跨越多個角色共享裝束(Rig)和動畫剪輯。
該功能現在作為預覽版資源包推出,你可以在此處獲取我們的示範專案和文件。我們渴望聽到你的想法。在我們的專用論壇中,讓我們知道工作流程有正確被支援、我們漏失了什麼、改進的想法等等。
粒子系統的改進
GPU 網格實例化(GPU Mesh Instancing)
粒子系統(Particle System)現在支持 GPU 實例化(GPU Instancing),它可以用更小的 CPU 性能成本渲染更多粒子網格。這裡將更詳細地解釋粒子系統所使用的程序實例化。
實例化(Instancing)支持已經添加到粒子標準著色器(Particle Standard Shader)中,預設將在所有新內容上啟用。在 Unity 2018.1 中,你只需簡單的在渲染器模組(Renderer Module)點擊選取框,即可手動啟用舊版 Unity 中的內容。也可以添加粒子實例化(Particle-Instancing)支援到你自己的著色器。
軌道粒子速度(Orbital Particle Velocity)
Unity 2018.1 給生存期間速度(Velocity over Lifetime)模組添加了一些新項目,讓你能夠使粒子相對於定義的中心點移動。預設情況下,中心與 Transform 對齊,但可以在模組(Module)中覆蓋掉。可以使用軌道(Orbital)參數使粒子繞著中心點移動,以及使用半徑(Radial)參數遠離/接近中心點。
紋理形狀模組(Textured Shape Module)
現在此模組中的所有形狀類型都支持紋理。紋理可用於:
- 控制粒子顏色
- 控制粒子透明度
- 根據您選擇的閾值和紋理通道丟棄粒子
子發射器(Sub-emitters)
在 Unity 2018.1 中有兩種新的方法來產生子發射器。第一種是通過觸發器模組(Trigger Module),其運作方式與碰撞模組(Collision Module)產生子發射器的方式類似。簡單的在子發射器模組(Sub-Emitter Module)選擇觸發器(Trigger)作為子發射器類型,然後,當觸發器模組(Trigger Module)內的條件滿足時(即粒子進入碰撞體積內),將觸發相對應的子發射器。
第二種新方法是通過腳本觸發子發射器。我們添加了一個名為 TriggerSubEmitter 的新腳本 API,可用於對單個粒子、一堆粒子或全部的粒子觸發子發射器。在子發射器(Sub-Emitter)模組中,你可以選擇手動(Manual)做為生成類型,這樣是告訴粒子系統只能使用腳本呼叫來觸發這個發射器。也可以使用現有類型(碰撞或死亡 - Collision or Death)並通過腳本為這些子發射器添加額外的觸發。
舊式粒子系統退役
舊式粒子系統(Legacy Particle System)的支援一直是每個 Unity 版本的開發負擔。新的引擎功能,例如 VR 和多執行緒渲染,需要花費時間來確保 Unity 發展上的相容性,想當然爾,總是會有新的引擎功能需要維護舊式粒子系統(Legacy Particle System)的程式碼。
這促使我們採取下個合乎邏輯的階段並使舊式粒子系統(Legacy Particle System)退役。因此,我們決定在 Unity 2018.1 中刪除其腳本綁定(Script Bindings)。
自從 Unity 5.4 以來,它已經被完全的棄用,我們的分析顯示幾乎不存在使用。我們的目標是在 Unity 2018.3 完全的移除舊式粒子系統(Legacy Particle System)。
如果你將受到任何影響,你有以下的選擇:
- 轉移你的舊式粒子系統(Legacy Particle System)到手裡劍(Shuriken)粒子系統。
- 使用我們的自動更新程序腳本來嘗試自動轉換(https://forum.unity.com/threads/release-legacy-particle-system-updater.510879/)。
- 在 https://forum.unity.com/threads/legacy-particle-system-deprecation.420351/ 聯繫我們尋求協助。
雖然我們無法承諾解決由此引起的所有問題,但我們絕對會傾聽你的疑慮並盡力減輕可能造成的任何痛苦。
動畫(Animation)
加權切線(動畫曲線)
權重切線(Weight Tangents)讓動畫師能夠透過允許控制切線的權重來使用更少的鍵以及更平滑的曲線來建立動畫曲線。一旦切線設置為加權(Weighted),你就能夠拉伸它來影響曲線插值,而無需添加任何其它鍵,以獲得更平滑、更精確的結果。
添加的貝茲控制柄和加權切線(Weighted Tangent)讓你能夠透過控制切線的權重來使用更少的鍵和更平滑的曲線來建立動畫曲線。一但切線設置為加權(Weighted),你就能夠拉伸它來影響曲線插值,而無需添加任何其它鍵,以獲得更平滑、更精確的結果。
我們還在 Animator Controller 視窗添加了一個簡單但又非常方便的縮放控制功能!
ProBuilder(資源包)
正如我們在二月份宣佈的那樣,ProBuilder 以及它的創造者已經加入 Unity。有了 ProBuilder、PolyGrid 以及 Polybrush 工具,我們如今在 Unity 編輯器中提供整合的進階關卡設計,而無需額外的費用。這個資源包,由 ProBuilder、ProGrid 和 Polybrush 組成,包含在所有的 Unity 訂閱計劃中(Personal、Plus、Pro 和 Enterprise)。
ProBuilder 是個 3D 建模和關卡設計工具的混合體,針對構建簡單幾何體最佳化,但能夠根據需求進行詳細的編輯和 UV 拆解。
你可以使用 ProBuilder 快速的建立原型結構、關卡、複雜化地形特徵、車輛和武器,或者製作自定義的碰撞幾何體、觸發區域或導航網格(Nav Mesh)。
ProBuilder 還包含匯出你的模型、編輯匯入網格的工具,以及執行期的 API 來提供你從自己的程式碼訪問 ProBuilder 工具集。
ProGrid 也為你提供了視覺化又實用的格子,可以貼齊在全部 3 個軸上。作用於格子上有助於提升速度和品質,製作關卡結構非常快速、簡單又精確。對於模組化或基於圖塊的環境特別方便,而當與 ProBuilder 合併使用時,可以為所有工作類型提供更快、更精確的幾何結構。參閱 ProGrid 簡介和教學以了解更多訊息。滾動到這個部落格文章的底部,了解關於 ProGrid 整合以及有用性的訊息。
Polybrush 讓你能夠直接在 Unity 編輯器中混合紋理和顏色、雕刻網格和散播物件。結合 ProBuilder,你可以獲得完整的編輯器內關卡設計解決方案。
最後,享受 Unity 與數位內容創作工具(如 Maya)的無縫往返轉換,以進一步細化和完善你的模型。
以下是 ProBuilder 如何讓你能夠快速建立原型結構、關卡、複雜化地形特徵、車輛和武器,或者製作自定義的碰撞幾何體、觸發區域或導航網格(Nav Mesh)的幾個範例。
擠出與嵌入 |
程序化形狀 |
場景中的 UV 控制 |
無限可編輯形狀 |
ProBuilder 已經被許多使用 Unity 製作的遊戲所使用。來看看精彩片段影片:
這裡是 ProBuilder 中多功能的快速概覽:
Polybrush 使你可以混合紋理和顏色,並直接在 Unity 編輯器中雕刻網格。
Polybrush 處於測試階段,在它的最新疊代中,剛剛獲得了一項新功能;它現在讓你能夠使用高度可自定義的筆刷來散播物件。
混合紋理 |
會置頂點顏色 |
散播細節網格 |
雕刻幾何 |
查看 Polybrush 介紹和教學以暸解更多。
作為一個資源包,ProBuilder、Polybrush 和 ProGrid 提供給你完整的編輯器內關卡設計解決方案,使你能夠更快的構建精確的幾何體。
ProBuilder 能夠透過新的 Unity 資源包管理器(Package Manager)獲得。我們計畫在 2018 的某個時機將資源包的其它兩個部分直接整合到 Unity 中,而現在,你可以在資源商店(Asset Store)免費下載到 Polybrush(beta) 和 ProGrids。
如何開始:
在 Unity 編輯器中,前往 Window > Package Manager 選單,點擊全部(All),選擇 ProBuilder 並點擊安裝(Install):
更多訊息,請查看文件和 ProBuilder 的入門教學系列。
如果你已經付費購買其中一個資源包,請查看這個部落格文章中的「How to get the tools, what’s the roadmap」的部分來獲取相關訊息。
核心引擎
C# 工作作業系統、實體組件系統與突發編譯器
憑藉著我們新的高效能多執行緒系統,我們正在重建非常核心的 Unity 基底。新系統將使你的遊戲能夠充分利用當前可用的多核處理器-沒有程式設計困擾。這要歸功於心的 C# 工作作業系統(C# Job System),它為你提供一個安全又便捷的沙盒,可以在其中編寫並行程式碼。我們還採用一個新模型,預設情況下使用實體組件系統(Entity Component System)編寫高效能程式碼,並使用突發編譯器(Burst Compiler)產生高度最佳化的原生碼。
憑藉預設的效能,你不僅能夠在更廣泛的硬體上運行你的遊戲,還可以使用更多單位和夠複雜的模擬來創建更加豐富的遊戲世界。
C# 工作作業系統(C# Job System)
在 C# 中編寫非常快速的並行化程式碼,以充分利用多核心處理器
現代硬體架構的趨勢已朝著多核心方向發展,而不是提高核心速度的傳統解決方案。採用 C# 工作作業系統(C# Job System)將幫助你完全利用這種處理能力提升的方式。
它讓你能夠在 C# 腳本中編寫快速被工作化(Jobified)程式碼。它也是安全的,因為它可以防止多執行緒的陷阱,比如競爭條件和死鎖。
全面提升效能
C# 工作作業系統(C# Job System)能夠提供更好的整體效能,特別是當實體組件系統(Entity Component System)(18.1 預覽版)以及我們新的突發編譯器(Burst compiler)這些新的 Unity 功能推出時。所有這些系統的目標是在 Unity 性能方面提升根本上的可能性,同時仍支援現有工作流程並實現平穩的技術轉換。
你需要做什麼?
為了實現這些效能提升,你需要對 Unity 中編寫程式碼的方是進行一些關鍵更改。首先,為 CPU 提估乾淨、線性資料陣列來讀取,而不是在計算過程中,從記憶體中的多個位置拉出,從而實現更快的效能。透過在記憶體管理中發揮積極作用,我們確保以最佳化效能的方式管理記憶體。Unity API 中添加了一組新工具,讓你能夠以明確又詳細的方式管理你的資料佈局以及記憶體管理方式。
實體組件系統(Entity Component System)(預覽版)
實體組件系統(Entity Component System)是一種編寫程式碼的方式,專注於你正在解決的實際問題:構成你的遊戲的資料和行為。
除了出於設計理由要成為未來遊戲程式設計更好的方法之外,使用實體組件系統(Entity Component System)使你處於理想位置來利用 Unity 的工作作業系統(Job System)以及突發編譯器(Burst Compiler),讓你充分利用當今的多核心處理器。
使用實體組件系統(Entity Component System),我們正在從物件導向的方法轉向資料導向設的設計,這意味者重複使用程式碼會更容易,其他人也會更容易理解和處理程式碼。
實體組件系統(Entity Component System)在 2018.1 中以預覽版資源包來提供,我們將在 2018.x 週期中繼續開發並發佈它的新版本。
突發編譯器(Burst Compiler)(預覽版)
Burst 是我們基於 LLVM 的編譯器,其採用 .NET IL 以及使用新的數學感知後端編譯器技術生成機械碼。Burst 採取 C# 工作作業並生成高度最佳化的程式碼,它們充分利用了你正在編譯的平台的特有功能。因此你可以獲得跨越多個平台手動調整彙編程序程式碼的許多好處,而不用全部都艱苦的工作。
突發編譯器(Burst Compiler)在 2018.1 中以預覽版資源包來提供,我們將在 2018.x 週期中繼續開發並發佈它的新版本。
深入了解 Unity 未來的效能最佳化。
此演講涵蓋了持續開發焦點,發表涵蓋 C# 工作作業系統(C# Job System)與實體組件系統(Entity Component System)的高效能 C# 腳本。觀看編寫高效能 C# 腳本影片錄製。
為了協助你入門,我們還提供了一個範例庫,示範使用 C# 工作作業系統(C# Job System)編寫大規模系統,以供參考和分享:C# 工作作業系統秘笈。
有關如何使用實體組件系統(Entity Component System)進行構建的更多訊息,請查看這些實體組件系統示範。
資源匯入
去年秋天,在 Unity Austin 2017 上,Unity 與 Autodesk 宣佈建立合作夥伴關係,以在 Autodesk 3D 工具和 Unity 引擎之間構建更多連接工作流程。
從那時起,我們改進了互通性,以使任何在 3dsMax/Maya/Unity 工作流程兩邊工作的遊戲開發者或美術人員受益。
我們的目標是提供適合美術人員的介面和工作流程,讓你能夠安全的將你的變更合併回那些資源中,以繼續你的工作。
當雙向傳遞(Roundtripping)時,資源時常已被編輯並重新命名,可能會改變它們的本質。如今 Unity 將確保透過外部應用程式對 FBX 所做的修改能夠重新映射到原檔而不會丟失訊息。
其它對工作流程和整合的改善包含照明往返(Lights Roundtripping)、動畫往返(Animations Riundtripping)(包含自定義屬性)以及混合變形(Blendshapes)(試驗中)
快取伺服器 6.0 版
遠端的快取伺服器(Cache Server)的 6.0 版是六個月集中精力提升品質和效能的結晶,現已推出。快取伺服器(Cache Server)透過在你的本機或專用的本地區域網路伺服器上最佳化資源匯入進程來使 Unity 創建更快速。這些改進為個人或團隊節省時間並加快了開發進程。立即在 GitHub 下載遠端快取伺服器(Remote Cache Server)。
編輯器概括
資源包管理器使用者介面(Package Manager UI)
資源包管理器(Package Manager)
在 2017.2 中,我們採用了新的資源包管理器(Package Manager)的第一個基柱,一種更加靈活以及模組化的方法來管理 Unity 開發的功能和構成你專案的資源。最初只在以前的版本中作為 API 公開,在 Unity 2018.1 中,我們採用一種新的資源包管理器使用者介面(Package Manager User Interface)。新的資源包管理器使用者介面(Package Manager UI)將協助你更有效的啟動專案,並使其更加順暢以及更容易安裝、更新和啟用新的 Unity 功能。
Unity 資源包管理器使用者介面(Package Manager UI)改進了你的專案管理工作流程的以下方面:
- 快速訪問新發布的功能:為你的編輯器版本提供可用功能列表,並從雲端下載。資源包會立即並動態的導入到你的專案。
- 立即獲取最新修補程序:快速檢查、下載,以及更新你已經在你的專案中啟用的資源包。
- 訪問預覽功能:許多新的 Unity 功能將作為「預覽版」推出提供下載,以讓你能夠進接最新技術。
- 輕鬆共享輕量級專案:Unity 資源包(Packages)被保管在你的機器傷的全域快取中,並被你的專案所參考。共享你的專案的時候,無需轉送資源包;編輯器將從雲端儲存庫中獲取並下載所需的資源包。
你可以從 Window 選單裡找到 Package Manager,並可以使用它來安裝像是 Shader Graph、Post Processing、 ProBuilder 以及 Lightweight 案 High Definition Render Pipelines 等等的功能。
透過裝配定義測試被定義的程序集
Unity 自動定義腳本如何編譯到託管程序集。Unity 編輯器中,對於反覆腳本變更的編譯時間,隨著你添加更多腳本到專案,從而增加編譯時間。
在 Unity 2017.3 中,我們引入了基於資料夾內的腳本來定義你自己的託管程序集的功能。透過將你的專案腳本拆分為多個程序集,大型專案在編輯器中的腳本編譯時間可以大大的減少。你可以將每個託管程序集視為在 Unity 專案中的個別程式庫。
在 2018.1 中,裝配定義(Assembly Definition)檔案(asmdef)程序集現在在任何其它腳本(Assembly-CSharp.dll 這些)啟動之前編譯,並且編譯在第一次編譯錯誤時不會停止。
在編譯剩餘的腳本(Assembly-CSharp.dll 這些)之前,將載入所有成功編譯的 asmdef 程序集以及其所有參考。這可確保 Unity 資源包已經構建並載入,而不理會專案中的其它編譯錯誤。
它還使資源包能夠擁有播放模式測試程序集而無需修改使用者專案設定。
在過去,添加播放模式測試時,使用者必須在設置中啟用它。這將導致在構建中註冊程序集,同時也意味著 C# 開發人員通常在專案中特定為測試而採用的那些沒有分離。
在 2018.1 中,你可以標記程序集來參照測試程序集,除非使用舊設定(向後相容),否則任何其它程序集都不會參照它們。不過,預定義程序集將不會自動參照這些程序集。
我們還預設添加了一個新的構建選項(BuildOption)。一般構建不會使用這些設置來構建程序集。只有 TestRunner 才會包含並構建測試程序集。
所有這些使得可以在沒有啟動設置的情況下,在專案中進行測試。
預先設置(Presets)
預先設置(Presets)是包含它們所適用的資源類型以及屬性修改列表(名稱/值成對)的資源。
預先設置(Presets)能夠輕鬆的從任何在物件檢查器(Inspector)上的 UI 的序列化物件或是從公有(Public)API 方法套用或建立。
物件不用保持連接來套用預先設置。因此,在預先設置被套用之後修改,不會有副作用。
每個物件類型可以經由新的預先設置管理器(Preset Manager)將一個預先設置註冊為其預設值。只要在 Unity 編輯器中建立物件,該物件的預設預先設置(Default Preset)就會自動套用。更改預設的預先設置不會影響現有物件。
預先設置(Presets)僅存在編輯器中。沒有執行期 API 可供更改。
預先設置(Presets)顯露 API 掛鉤(Hook),使它們能夠在匯入、新物件建立 API 之前立即設置,讓編輯器程式碼使用預設的預先設置來建立物件。
捨棄內建支援 Substance
正如 2017 年 12 月宣佈的那樣,我們在 Unity 2018.1 編輯器中捨棄對 Substance Designer 材質匯入的內建支援。你可以在這裡找到更多關於如何採用 Substance 的資訊。
電影機器與時間軸工具(Cinemachine & Timeline)
時間軸(Timeline)改進與編輯模式
在 2018.1 中,我們對 Timeline 添加了許多改進。使用 Timeline 鍵盤導覽,你現在可以使用 Tab 和箭頭按鍵來輕鬆的在收合和展開軌道(Track)切換,從而加快工作流程。
我們還添加了新的時間軸縮放條(Timeline Zoom bar),這樣可以輕鬆地放大和縮小來獲取你的 Timeline 軌道概覽。
我們還在 Timeline 中引入了編輯模式。
當操作剪輯片段時,基於縮放的貼齊行為將會保持相鄰的剪輯片段在一起。要建立混和效果,你可以透過離合鍵(Ctrl)釋放(鬆開)邊緣磁吸行為。這使得移動/修剪剪輯片段能夠與相鄰剪輯片段混合,而不會受到邊緣磁吸的阻礙。
有三種模式:
- 混合(Mix)模式讓兩個剪輯片段能夠混合再一起以建立過渡轉換。這個模式是 Timeline 迄今為止的工作方式,它是預設的編輯模式。
- 折疊(Rippling)模式能夠透過為新素材騰出空間來讓剪輯片段插入到已經包含剪輯片段的軌道上。
- 替換(Replace)模式讓剪輯片段能夠覆蓋掉已經存在於軌道上的剪輯片段,以便在保留時間的同時更新素材。
三個最新採用的按鈕來選擇想要的模式 |
電影機器(Cinemachine)的改進
Cinemachine 在 18.1 中進行了改進,包含電影機情節圖板(Cinemachine Storyboard),使你能夠在 Timeline 中設置計時和基本故事情節動畫做為 Cinemachine 剪輯片段的功能。這些將幫助你讓人們在講故事過程中從頭到尾使用 Unity,讓他們在整個創作過程中始終如一。
你可以控制你的板子做交錯淡化、基礎縮放和「Ken Burns」風格運動。
按你所希望的方式取得你的故事塊以及你的計時和鏡頭運作。添加聲音來建立逼真的感覺並將你的故事拉在一起。一旦準備就緒,你只需使用一個按鍵就能在故事板與 Cinemachine 攝影機之間切換,同時保持編輯的完整性。
不必在別的工具中做你的故事板以及預覽編輯;你可以在 Unity 中完成所有工作。
其它改進包含資源包管理器(Package Manager)整合、攝影機抖動系統、支援自定義攝影機混合曲線以及許多其它的。
腳本(Scripting)
捨棄 MonoDevelop
對我們來說很重要的是,我們為你提供了一個很棒的 C# 整合開發環境(IDE)體驗來配合新的 C# 功能。因此,為了在 macOS 上支援在新的 .NET 4.6 腳本運行時的最新 C# 功能和 C# 除錯,我們從 Unity 2018.1 開始使用 Visual Studio for Mac 來取代 MonoDevelop-Unity 5.9.6(如 1 月所宣布的)。當我們在 Unity 中移到(目前試驗性質).NET 4.6 腳本運行升級時,這將更好的支援許多 C# 6.0 集更高版本中提供的令人興奮的新 C# 功能。
在 Windows 上,我們將繼續使用伴隨 Unity 的 Visual Studio 2017 Community。Visual Studio Community 已經在新的 .NET 4.6 腳本運行上支援最新的 C# 功能和 C# 除錯。MonoDevelop-Unity 5.9.6 將從 Unity 2018.1 的 Windows 安裝器移除,因為它不支援這些功能。
Visual Studio Code 也支援 Unity,並能擴充來提供智能感知(IntelliSense)和 Unity Debugger Extension 來為你的 Unity C# 專案除錯。請參閱使用 VS Code 進行 Unity 開發來了解細節,並在我們的部落格文章了解相關的影響和替代 IDE 的更多訊息。
如往常一樣,我們正在尋求反饋,如果你有使用 Visual Studio 體驗或與 Unity 整合上的問題,請到「https://developercommunity.visualstudio.com/ 」回報。
添加 IL2CPP 腳本後端對 Windows 和 macOS 桌機的支援
在 2018.1 中,我們添加了 IL2CPP 腳本後端對 Windows 和 macOS 桌機的支援。這對 Mac/OSX 和 Windows 桌機播放器帶來 IL2CPP 的 CPU 速度改進,並啟用第三方數位版權管理(DRM)技術來幫助提高應用程式代碼的安全性。
腳本升級 .NET 4.x
新的腳本運行在 Unity 2018.1 中不再是試驗性質。在 Unity 2017.1 中,我們發佈穩定腳本運行的第一個試驗性質預覽版。在整個 2017.2 和 2017.3 的發佈週期中,許多 Unity 使用者使用這個試驗性質的腳本運行並提供寶貴的反饋意見。(謝謝大家!)我們還與微軟的優秀開發人員合作,包含 Mono 和 Visual Studio 團隊。由於我們已經解決了問題並糾正錯誤,這個現代腳本運行變得越來越穩定,現在可以廣泛使用了。
升級的編譯器和運行提供了更好的穩定性、更豐富的除錯方式,以及與所有平台上的現代 .NET 架構有更好的均勢。例如,C# 6 和新的 .NET API 使 Unity 相容於現代 .NET 程式庫和工具。
標準 2.0 .NET 支援以及新的 Unity 配置
使用新的腳本運行有兩個配置可用:.NET 4.x 和 .NET Standard 2.0。這兩個配置都完全支援 .NET Standard 2.0,以支援使用最新的跨平台庫。.NET Standard 2.0 配置針對小型構建、跨平台支援和提前編譯進行了改進。.NET 4.x 配置公開了更大的 API 表面,主要用於向後相容。
共鳴聲音:用於手機和桌機的空間聲音
Google 的空間聲音 SDK,共鳴聲音(Resonance Audio)完全整合於 Unity 2018.1 中,使得開發人員能夠在手機和桌機上建立更逼真的 VR 和 AR 體驗。在 Unity 編輯器中使用共鳴聲音(Resonance Audio),你現在可以在 Android、iOS、Windows、MacOS 和 Linux 上為你的 XR、3D 和 360 影像專案使用最高保真度呈現上百個同步 3D 聲音來源。
最近一些使用 Unity 製作的遊戲範例是用於 Gear VR 的 Pixar 的 Coco VR、Disney 用於 Android 和 iOS 的 AR app Star WarsM:Jedi Challenges,以及用於 Daydream 的 Runaway 的 Flutter VR。
XR
原生多平台 AR API(預覽版)
此版本中添加了一個新的、原生、多平台 XR API,為更加可擴充框架奠定了基礎,該框架最初目標是抽象化手持 AR SDK。該 API 旨在使開發人員能夠一次構建手持 AR 應用程式,並跨越多種設備類型進行部署。隨著功能添加到這個 API,我們最終將棄用在 Bitbucket 上的 ARKit 插件以及在 GitHub 上的試驗性 ARInterace 專案。對手持 AR SDK 的支援將在編輯器中以預覽包來提供。
Magic Leap
對於所有想要開始探索 Magic Leap 的創作者們,我們很高興能在 Magic Leap Creator Portal 上為你提供 Unity for Magic Leap Technical Preview 和 Lumin SDK。
來到 2018,Magic Leap One™,適用於想要在 Magic Leap 平台上構建體驗的設計師和開發者。 |
Magic Leap Technical Preview 適用於那些想要了解者個令人興奮的新平台的人。除了 2018.1 功能之外,Technical Preview 還包含針對 Magic Leap 的 Lumin OS 的 Build Window 下的新平台。此預覽與 Lumin SDK 相結合,還可以訪問到 Magic Leap Zero 和 Magic Leap Remote,能夠模擬硬體平台。了解更多。
Daydream 獨立 VR 頭戴耳機
Unity 2018.1 使用 Worldsense 技術為你帶來對 Google 的 Daydream 獨立 VR 頭戴耳機的支援,為 Daydream 應用程式提供由內而外、六自由度(6DoF)追蹤的支援。現在就用它來構建,並在今年晚些時候發佈硬體時做好準備!
ARCore 1.1 for Unity
借助 ARCore 開發人員預覽版,你現在可以在 Google Play 上為超過 1 億台支援 Android 設備創建高品質的 AR 應用程式。ARCore 1.1 for Unity 還使用導向特徵點增強了對場景環境理解,這是個讓你能夠放置虛擬內容在檢測特徵點附近表面上的新功能,例如罐頭、盒子和書。它還讓你能夠使用 ARCore Instant Preview 近乎即時的測試和疊代你的 AR 應用程式,了解更多關於所有 ARCore 帶來給 Unity 2018.1 的功能。
ARCore Instant 預覽:從設備串流到 Unity 編輯器的資料並在 Game 視窗顯示。 |
導向點:兩個虛擬螺柱放置在牆上,然後從另一次觀察。 |
立體 360 圖像/影片捕捉
無論你是個想要製作 360 預告片展示技能的 VR 開發者,還是想要製作吸引人的電影短片導演,你的工作流程都會變得更加輕鬆。Unity 的新技術,在 Unity 中捕捉立體 360 圖像和影片,使你能夠創建並在 YouTube、Within、Jaunt、Facebook 360 或 Steam 360 Video 這些平台上與數百萬觀眾分享身歷其境體驗。
我們獨立於設備的立體 360 捕捉技術是基於 Google 的 Omni-Directional Stereo(ODS)技術,使用立體立方體貼圖渲染。我們在 Unity 編輯器和 PC 桌機播放器上的 Unity 圖形管線原本就支援立體立方體貼圖渲染。在生成立體立方體貼圖後,立方體貼圖會被轉換為 360 影像播放器所使用投影格式的等距離長方圓柱貼圖。
立體 360 捕捉運行於前向和延遲照明管線,具有螢幕空間和立方體貼圖陰影、天空盒、多重採樣抗鋸齒(MSAA)、高動態範圍成像(HDR)以及新的後製處理堆棧(Post-Processing Stack)。
你可以在這個部落格文章找到更多資訊。
試驗性立體 360 功能增加了對捕捉平面視覺或立體視覺 360 圖像做為立方體貼圖圖像的支援。可運行於編輯器中或執行期。 |
平台
Android ARM64(預覽版)
在 2018.1 中,我們基於 IL2CPP 技術為 Android 添加了 ARM64-bit 運行支援。目前,只能使用 Untiy 生成適用於 Android 的 32 位元 ARM 或 x86 版本。幾乎所有當前的晶片組都是偏向 64 位元的形式,但我們還沒有充分發揮潛在的優勢。對於運行 64 位元 Android 應用程式的新支援將具備效能優勢,而且遊戲將能夠處理超過 4GB 的記憶體空間。
對於非 VR 應用程式的 Android Sustained Performance Mode
Android Sustained Performance Mode 可在較長時間內設置可預測、一致性設備效能級別,而不用熱調節。它以一些效能降低的成本提供更長的電池壽命和流暢體驗。基於 Google 的 Sustained Performance API。這個設置已經可用於 VR 應用程式,現在你也可以對非 VR 應用程式啟用它。
效能報告(Performance Reporting)
Performance Reporting(包含 Unity Plus 和 Unity Pro)現在支援 Windows 桌機,加入了對 MacOS 和行動平台(iOS 和 Android)的支援。現在將記述 Windows 本機崩潰,以便你從 Unity Developer Dashboard 查看和除錯。儀表板(Dashboard)也正在更新,其中包含用於管理和查看報告的新功能,以及高度活躍專案的更好效能。
發佈說明
如往常一樣,請參閱發佈說明以獲取新功能、改進和修復的完整列表。你也可以在我們的論壇上向我們提供反饋。
取得 Unity