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