7

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 不支持这种方式的反射。

4

1 回答 1

11

Bevy 定义了一组特征 (),这些特征由匹配这些签名的函数实现。然后,这些特征通过 Bevy 前奏曲输出。这样做的一个限制是,您只能将具有一定数量参数的函数转换为系统,并且参数必须按特定顺序([命令?]、[资源...]、[查询/组件。 ..])。IntoQuerySystem IntoForEachSystem

编辑:对于每个系统在 Bevy 0.4 中已弃用。

于 2020-08-20T02:14:59.790 回答