Entitas CookBook 翻译 - 105_Collec
2018-04-24 本文已影响0人
SkyrimWu
Collector 收集器
请先完成Group的章节再继续以下的阅读。
Collector是Group的一个观察者类。下面就是一个MatchOne(entitas的一个示例)中创建Collector的示例。
context.CreateCollector(GameMatcher.GameBoardElement.Removed());
在这个例子中,我们定义了一个Collector来收集所有删除了有GameBoardElement
Component的Entity。在内部,Collector将要求一组包含GameBoardElement
Component的Entity。因为我们对Removed
事件感兴趣,它会自行对group的事件进行订阅,并保留从group中移除的entity的引用列表。我们有三个事件可以留意:
- Added
- Removed
- AddedOrRemoved
同样值得注意的是,但一个Entity由于被从group中移除而收集时,即使我们重新将GameBoardElement
component加上去来让它重新加回到group,它依然会在被removed
集合收集。这就是为什么Reactive System中会有个Filter
方法了(更多的请查看Reactive System章节)。
Collector也是可以伴随着group数组或是event数组创建,这意味着我们可以同时观测多个group来保持一个对应变化的entites列表。
Collector可以被激活或是反激活,所以我们可以停止、恢复观察group。我们也可以将遍历收集到的entity,并且将他们全部清理。
Collector就是reactive system能量的源泉。你可能不会单独使用这个,不过这个仍然是entitas非常重要一个成分。