天天看點

Unity ECS (DOTS)<二> PureECS一、Entity 導入 Unity二、Demo

目錄

  • 一、Entity 導入 Unity
  • 二、Demo
    • 1.建立一個CubeComponentData用來存儲資料
    • 2.建立一個CubeComponentSystem用來處理行為
    • 3.建立一個CubePlay用來生成Entity
    • 4.運作結果:10000個Cube
    • 5.Entity Debuger 檢視我們建立的實體資訊

一、Entity 導入 Unity

打開Unity PackageManager視窗:Windows->Package Manager。如下圖做選擇, 然後點選Install按鈕。

Unity ECS (DOTS)<二> PureECS一、Entity 導入 Unity二、Demo

在這裡有個需要注意的點就是Hybrid Renderer這個包有可能是需要更新到最新版本的,這點在後續的代碼中會再提到。

二、Demo

Unity ECS 是一個相對沒有穩定的架構,他的底層借口或者一些屬性有可能在你看到這篇内容的時候已經發生了變動, 關于這點,是需要小夥伴們在編碼的過程中多注意的,萬一遇到了,請務必記住“内事不決問百度,外事不明問谷歌”!

1.建立一個CubeComponentData用來存儲資料

Unity ECS (DOTS)<二> PureECS一、Entity 導入 Unity二、Demo

1)[Serializable]:序列化标簽

2)IComponentData :元件資料接口,用來存儲資料的

3)float3:Unity.Mathematics程式集下的結構體(替代Vector3)

2.建立一個CubeComponentSystem用來處理行為

在這個行為管理System裡邊我們做一個Cube不斷歸位上升的位移操作

Unity ECS (DOTS)<二> PureECS一、Entity 導入 Unity二、Demo

1)ComponentSystem:元件行為基類

2)Entities.ForEach:Entity篩選(可以進去看一看,有大量的重寫方法)

3.建立一個CubePlay用來生成Entity

Unity ECS (DOTS)<二> PureECS一、Entity 導入 Unity二、Demo

1) EntityManager : 我們擷取預設世界的Entity管理類, 在裡邊添加我們自己Entity

2) EntityArchetype : 要建立的Entity類型

3) Translation : 位移元件

4) RenderMesh/RenderBounds : 渲染元件**(注意Hybrid Renderer版本, 低了或沒有會報錯)**

5) LocalToWorld : 設定世界歸屬類型

6) NativeArray : 将本地記憶體的緩沖區公開給托管代碼,需要手動清理(Dispose)

7) SetComponentData : 設定(綁定)元件

8) SetSharedComponentData : 設定綁定(共享)元件

4.運作結果:10000個Cube

Unity ECS (DOTS)<二> PureECS一、Entity 導入 Unity二、Demo

5.Entity Debuger 檢視我們建立的實體資訊

Windows -> Analysis -> Entity Debuger

Unity ECS (DOTS)<二> PureECS一、Entity 導入 Unity二、Demo