Bevy是一个新的 Rust 游戏引擎和 ECS,它有一个特性,它可以根据参数的类型“范围”它的系统。从它的文档:
我们传递给“系统函数”的参数定义了系统在哪些实体上运行。在这种情况下,greet_people 将在具有 Person 和 Name 组件的所有实体上运行。
它看起来像这样:
struct Person;
struct Name(String);
fn greet_people(person: &Person, name: &Name) {
println!("hello {}", name.0);
}
Bevy 是如何做到这一点的?我以为我在某处读到 Rust 不支持这种方式的反射。