什麼是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項目指南

  1. 打開Unity Editor (2019.1.0f1及以上版本)
  2. 創建一個新的Project
  3. 打開Package Manager(菜單:Window > Package Manager)
  4. 點擊Advanced按鈕,打開Show preview packages選項
  5. 添加以下packages:
  6. Entities
  7. Hybrid.Renderer

添加Entities包時,也會把以下packages添加到項目中:

  • Burst
  • Collections
  • Jobs
  • Mathematics

注意: 你可以使用Unity Hub在一台電腦上安裝多個版本的Unity。

關於Package Manager的詳細使用方法,見這裡

(後續會寫更多關於Unity DOTS的內容。)

References:

  • unity.com/dots
  • ECS Sample Projects

推薦閱讀:

相关文章