1.官方文檔
https://docs.unity3d.com/Packages/com.unity.tiny@0.13/manual/intro-for-unity-developers.html
2.Tiny ECS 與傳統 Unity 的區別
-
Unity一個工程一個項目,而Tiny目前是包括在Unity工程里的,一個工程里可以有多個項目,通過雙擊 .utproject 可以打開新的Tiny項目
-
Unity可以使用傳統的EC(實體組件)開發模式,也能用ECS,但Tiny強制使用ECS模式
-
Unity的分為一個一個的Scene,每個Scene里又包含N多的GameObject,每個GameObject上又包括N多的組件,而Tiny,取代Scene的是EntityGroups,取代GO的是Entity,Entity上同樣掛着N多的組件
-
Unity的組件,可以有數據,有邏輯,一個GameObject可以掛載多個同樣的組件,而Tiny,組件僅僅包括數據,不能有邏輯,而且一個Entity只能由一個同樣類型的組件
-
Tiny可以同時存在多個EntityGroups,而Unity只能同時存在一個Scene(但在編輯器模式下可以打開多個Scene同時編輯),EntityGroups的文件后綴是 .utdata
3.ECS
組件:僅僅包含數據,是一個一個的結構體
實體:是組件的集合
系統:不關心實體,僅僅關注它訂閱的組件,然后在循環里處理這些組件

4.ECS中的System
在Tiny里,System並不需要像舊版Unity一樣掛載后才會啟動,只要項目里存在System腳本,就會在游戲啟動后自動運行。
若要設置不同的System的運行時序,則需要在類前用屬性標簽指明:
例如,TypeScript里是這樣的:
@ut.executeAfter(ut.Shared.UserCodeStart)
@ut.executeBefore(ut.Shared.UserCodeEnd)
export class CircleMovement extends ut.ComponentSystem {
其中有一個特殊的類叫 “Fences”,柵欄基本上是系統執行圖中的空節點:它們不執行邏輯,但是您可以使用它們來調度系統,而不知道游戲中的其他系統。
- InputFence
- UserCodeStart
- UserCodeEnd
- RenderingFence
- PlatformRenderingFence
這種用法很像舊的Unity里的各種Start,Enable,OnRender之類的
