Entitas概況
Entitas是使用C#語言開發(fā)的一個快速的輕量級的ECS框架,作為Unity的一個插件使用.在這里我們只分析Entitas的結(jié)構(gòu)以及代碼,并不會講解如何使用它。如果想了解如何使用可以看這里 。
Entitas大致可以分為以下6個模塊:Context,Entity,Component,System,Matcher,Group和Collector等,后面我們就通過分析這6個模塊的源代碼來了解Entitas。
首先我們看下面的圖了解以下Entitas的各個模塊的基本功能
Entitas概況
Entitas優(yōu)點(diǎn):
- 天然的低耦合,system和system之間互不干擾
- 天然的邏輯與表現(xiàn)分離,Component只包含數(shù)據(jù)
- 戰(zhàn)斗錄像與回放,數(shù)據(jù)回滾與預(yù)測方便,因?yàn)檫壿嫳憩F(xiàn)分離所以只需要操作純數(shù)據(jù)就好了。
- 訪問速度快,框架基本無消耗。Entitias內(nèi)部對Entity,Component以及Group做了大量的緩存。提高CPU的緩存命中
- 完善的代碼生成工具,提高開發(fā)效率。可以給Conponent添加各種Attributes,從而生成各種特殊的組件,如單例[Unique],事件[Event],主鍵[EntityIndex]
缺點(diǎn):
- Entitas是一個非常自閉的框架,所有的事情都只能在其內(nèi)部完成。
- 并不是游戲中的所有功能模塊都適合這個框架,如UI,行為樹,動畫等
- 因?yàn)槭羌冞壿?,不是oop,所以會增大項(xiàng)目新人的上手難度。
- 項(xiàng)目文件數(shù)量會超級的多。