ECS 里面基本的一些概念
Unity ECS框架里面有幾個重要的概念:
Entity, ComponentData, System,Archetype, EntityManager, World;
?
ComponentData:
組件數(shù)據(jù),開發(fā)的時候,可以把每個功能相關(guān)的數(shù)據(jù)放到ComponentData里面。
?
Entity:
對象實體,純數(shù)據(jù)對象,里面包含了一個個的ComponentData, 每個相關(guān)功能使用的數(shù)據(jù)我們放Entity的ComponentData里面, 如圖:

System:
具體算法邏輯的實現(xiàn),System算法數(shù)據(jù)基于Entity里面對應處理的ComponentData。游戲引擎每次Update的時候,System都會根據(jù)每個Entity里面的它使用的ComponentData, 來更新數(shù)據(jù)完成計算。
?
EntityManager:
負責Entity相關(guān)類型信息,對象實體的創(chuàng)建與管理。
?
Archetype:
Entity是由多個ComponentData組成的,每種Entity類型都會對應一個Archetype, 里面描述了這個Entity類型以及相關(guān)的布局。Archetype由EntityManager創(chuàng)建出來,創(chuàng)建出來后這個類型的Entity的大小,包含的組件數(shù)據(jù),內(nèi)存布局都確定了。
?
World:
世界包含多個Entity組成Entity群體,通過世界把這些Entity群體孤立起來。Unity里面可以同時擁有多個不同的世界, 每個世界獨立包含EntityManager, 與Systems, 在世界里面創(chuàng)建出來的一個Entity,只屬于這個世界。世界里每個System也只能迭代一個世界里面的Entity實體數(shù)據(jù)。你可以創(chuàng)建多個World。
?
總結(jié)一下Unity ECS的使用步驟與邏輯關(guān)系:
(1) 創(chuàng)建一個ECS的World;
(2) 使用World的EntityManager為不同Entity類型創(chuàng)建出來Archetype;
(3) 基于Archetype, 我們創(chuàng)建出來Entity內(nèi)存對象, 并初始化Entity里面每個ComponentData數(shù)據(jù);
(4)為ECS World編寫System算法,World會調(diào)用System算法來迭代每個Entity里的相關(guān)ComponentData;
?

(Unity ECS 架構(gòu)圖)