Collector 收集器
請(qǐng)先完成Group的章節(jié)再繼續(xù)以下的閱讀。
Collector是Group的一個(gè)觀察者類。下面就是一個(gè)MatchOne(entitas的一個(gè)示例)中創(chuàng)建Collector的示例。
context.CreateCollector(GameMatcher.GameBoardElement.Removed());
在這個(gè)例子中,我們定義了一個(gè)Collector來收集所有刪除了有GameBoardElementComponent的Entity。在內(nèi)部,Collector將要求一組包含GameBoardElementComponent的Entity。因?yàn)槲覀儗?duì)Removed事件感興趣,它會(huì)自行對(duì)group的事件進(jìn)行訂閱,并保留從group中移除的entity的引用列表。我們有三個(gè)事件可以留意:
- Added
- Removed
- AddedOrRemoved
同樣值得注意的是,但一個(gè)Entity由于被從group中移除而收集時(shí),即使我們重新將GameBoardElement component加上去來讓它重新加回到group,它依然會(huì)在被removed集合收集。這就是為什么Reactive System中會(huì)有個(gè)Filter方法了(更多的請(qǐng)查看Reactive System章節(jié))。
Collector也是可以伴隨著group數(shù)組或是event數(shù)組創(chuàng)建,這意味著我們可以同時(shí)觀測(cè)多個(gè)group來保持一個(gè)對(duì)應(yīng)變化的entites列表。
Collector可以被激活或是反激活,所以我們可以停止、恢復(fù)觀察group。我們也可以將遍歷收集到的entity,并且將他們?nèi)壳謇怼?/p>
Collector就是reactive system能量的源泉。你可能不會(huì)單獨(dú)使用這個(gè),不過這個(gè)仍然是entitas非常重要一個(gè)成分。