Rust Bevy Query Setsについて
はじめに
本記事はBevy非公式(と思えないほど素晴らしい)サイトのメモである。
メモ
変更の競合が発生することを防ぐため、同じComponentに対する複数のQueryを持つことはできない。
ただ、QuerySetを使用することで以下のように複数のQueryを設定できる。
変更の可能性があるQueryは一度に1つしか使用されなくなり、競合を防ぐ。
fn reset_health( // EnemyのHealthとPlayerのHealthにアクセスする // 一部のEntityは以下のQueryの両方に合致する可能性がある mut q: QuerySet<( Query<&mut Health, With<Enemy>>, Query<&mut Health, With<Player>> )>, ) { // EnemyにHealthをセットする for mut health in q.q0_mut().iter_mut() { health.hp = 50.0; } // PlayerにHealthをセットする for mut health in q.q1_mut().iter_mut() { health.hp = 100.0; } }