Unity DOTS簡介
什麼是Unity DOTS?
Unity面向數據的技術棧(data oriented tech stack, DOTS)包括以下主要部分:
- Entity Component System 簡記為ECS,提供了默認情況下寫出高性能的代碼的方法
- C# Job System 提供了以並行的方式在多核CPU上運行遊戲代碼的方法
- Burst compiler 一個math-aware,後端編譯器(backend compiler),能產生高度優化的機器碼(highly optimized machine code)
有了這些系統,Unity可以為你的目標平台的特殊能力,產生高度優化的代碼。
Entity Component System (ECS)
ECS為遊戲設計提供了較好的方式,使你可以專註於你要解決的實際問題:數據(data)和行為(behavior)。它利用C# Job System和Burst Compiler,使你能夠充分利用現今的多核處理器。從面向對象到面向數據的設計使你能夠更容易地重用代碼,別人也更容易地理解你的代碼。
ECS作為一個實驗包(experimental package)發送,當前支持2018.3及以上版本。
C# Job System
新的C# Job System以一個安全、易用的方式利用多核處理器。容易是因為它被設計成向用戶腳本開放,允許你寫出完全、快速、jobified的代碼,同時提供保護,避免一些多線程的陷阱,如:條件競爭(race conditions)。
C# Job System是Unity 2018.1之後一個內置的模板。
更多關於C# Job System的例子在這兒
Burst
Burst是一個新的LLVM-based, math-aware的後端編譯器(backend compiler)。它把C# jobs編譯高度優化的機器碼,充分利用目標平台的特定能力(particular capabilities)。
Burst是一個實驗包,支持Unity 2018.3及以後版本。
Watch Joachim Ante present these new systems at Unite Austin
創建一個空白ECS項目指南
- 打開Unity Editor (2019.1.0f1及以上版本)
- 創建一個新的Project
- 打開Package Manager(菜單:Window > Package Manager)
- 點擊Advanced按鈕,打開Show preview packages選項
- 添加以下packages:
- Entities
- Hybrid.Renderer
添加Entities包時,也會把以下packages添加到項目中:
- Burst
- Collections
- Jobs
- Mathematics
注意: 你可以使用Unity Hub在一台電腦上安裝多個版本的Unity。
關於Package Manager的詳細使用方法,見這裡
(後續會寫更多關於Unity DOTS的內容。)
References:
- https://unity.com/dots
- ECS Sample Projects
推薦閱讀: