问题描述
我正在构建一个城市建筑游戏原型,在这个原型中,我让村民同时执行许多不同的任务,例如搬运东西,建造,收获。为此,我创建了一个TaskManager单例脚本,其中包含任务积压数组和一个活动任务数组,可以根据优先级选择从积压到活动的任务,在活动列表上运行每个任务的相应run_task()方法,并在完成后将其删除。我仍在学习生锈和弯曲,但是从我的阅读中,我无法像在godot中那样真正地在弯曲中形成单身。在这种情况下,我有什么选择?抱歉,如果不是这个问题的地方,但是我很难找到有关这种与引擎和铁锈有关的信息。
解决方法
除非我误解了您的需求,否则可以使用“资源”来完成。来自Bevy book:
...但是大多数应用程序也将需要某种“全球唯一”数据。在Bevy ECS中,我们使用资源表示全球唯一的数据。
使用方式:
App::build()
.add_resource(TaskManager{ ... })
.add_system(process_tasks.system())
...
fn process_tasks(manager: Res<TaskManager>,...) {
...
}