0

我正在构建一个城市建设游戏原型,让村民同时执行许多不同的任务,例如搬运东西、建造、收割,为此我创建了一个带有任务积压数组和活动任务数组的 TaskManager 单例脚本,它可以根据优先级选择哪些任务从积压到活动,运行活动列表中每个任务的相应 run_task() 方法,并在完成后将其删除。我仍在学习 rust 和 bevy,但从我读到的内容来看,我无法像在 godot 中那样在 bevy 中制作单例。在这种情况下我有什么选择?抱歉,如果这不是此类问题的地方,但我很难找到有关与发动机和生锈相关的此类事物的信息。

4

1 回答 1

1

除非我误解了您的需求,否则这是通过使用“资源”来完成的。来自贝维的

...但大多数应用程序还需要某种“全球唯一”数据。在 Bevy ECS 中,我们使用资源来表示全球唯一的数据。

像这样使用:

App::build()
    .add_resource(TaskManager{ ... })
    .add_system(process_tasks.system())
    ...
fn process_tasks(manager: Res<TaskManager>, ...) {
    ...
}
于 2020-10-31T01:29:55.857 回答