Entitas CookBook 翻译 - 105_Collector 收集器

Collector 收集器

请先完成Group的章节再继续以下的阅读。

Collector是Group的一个观察者类。下面就是一个MatchOne(entitas的一个示例)中创建Collector的示例。

context.CreateCollector(GameMatcher.GameBoardElement.Removed());

在这个例子中,我们定义了一个Collector来收集所有删除了有GameBoardElementComponent的Entity。在内部,Collector将要求一组包含GameBoardElementComponent的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非常重要一个成分。

你可能感兴趣的:(Entitas CookBook 翻译 - 105_Collector 收集器)