Unity Tiny & ECS 學習筆記


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”,柵欄基本上是系統執行圖中的空節點:它們不執行邏輯,但是您可以使用它們來調度系統,而不知道游戲中的其他系統。

  1. InputFence
  2. UserCodeStart
  3. UserCodeEnd
  4. RenderingFence
  5. PlatformRenderingFence

這種用法很像舊的Unity里的各種Start,Enable,OnRender之類的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM