0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BevyEngineのQueryフィルター種類まとめ(0.14)

Posted at

フィルターの種類

参考:https://docs.rs/bevy/latest/bevy/ecs/query/trait.QueryFilter.html

コンポーネントフィルター

With
Tで指定されたコンポーネントを持っているEntityのフィルター
Without
Withの否定版

変更検出フィルター

Added
追加後の最初にのみ保持されるコンポーネントのフィルタ 一回限り初期化などに利用します
Changed
コマンドで発行されたエンティティの修正(エンティティの作成、エンティティコンポーネントの追加や削除など)のフィルタです

タプルでフィルターの指定

Query<&ComponentA, (With, Without)>
タプルを利用すると一つのQueryでフィルターを複数定義できる

フィルタの論理演算子

Or
Query<&ComponentA, Or<(With, Without)>>
`Or`の中にタプルで定義すると与えられたフィルタのいずれかが適用されるかテストするフィルタになる

自作フィルター

QueryFilter#[derive()]につかすることで新たにフィルターを自作することができる
これにより、
複数のシステム間でフィルターを再利用することができる、
フィルターを組み合わせて、より複雑なフィルターを作成することができる。

#[derive(QueryFilter)]
struct MyFilter<T: Component, P: Component> {
    with_a: With<ComponentA>,
    or_filter: Or<(With<ComponentC>, Added<ComponentB>)>,
    generic_tuple: (With<T>, Without<P>),
}

fn my_system(query: Query<Entity, MyFilter<ComponentD, ComponentE>>) {
    // ...
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?