我不知道这对您的用例是否有帮助,但在bevy 0.4 公告中,一个示例表明可以使用FixedTimestep
.
因此,使用 0.4 公告中的示例作为基础:
use bevy::prelude::*;
use bevy::core::FixedTimestep;
fn main() {
let target_rate = 60.0;
App::build()
// Add the default plugins to open a window
.add_plugins(DefaultPlugins)
.add_stage_after(
stage::UPDATE,
"fixed_update",
SystemStage::parallel()
// Set the stage criteria to run the system at the target
// rate per seconds
.with_run_criteria(FixedTimestep::steps_per_second(target_rate))
.with_system(my_system.system()),
)
.run();
}
也许这种方法没有优化(我不完全知道FixedTimestep
标准在内部是如何工作的),但在大多数情况下应该足够了。
编辑
我发现可以使用render App 阶段作为阶段名称,这应该更符合您的需求:
use bevy::prelude::*;
fn main() {
App::build()
// Add the default plugins to open a window
.add_plugins(DefaultPlugins)
.add_system_to_stage(bevy::render::stage::RENDER, my_system.system())
.run();
}