3个不稳定版本
0.2.0 | 2023年9月12日 |
---|---|
0.1.1 | 2023年6月22日 |
0.1.0 | 2023年6月22日 |
#2088 in 游戏开发
27 每月下载量
28KB
bevy_oneshot
Bevy的一次性系统简单实现
为什么?
这个库主要是为了方便与GUI工作而制作的。记得你创建了一个带有几个输入参数的GUI系统时的那种感觉吗?一开始一切顺利,但当你界面中第一个按钮出现时,处理这个按钮需要向系统添加几个参数。第二个按钮需要一个资源,第三个需要一个查询。第四个按钮之后,你收到了一个clippy::too_many_arguments警告... 真是令人沮丧,对吧?
使用bevy_oneshot
,你可以将特定按钮需要的所有参数放入一个单独的系统,或者甚至不编写系统,通过创建一个lambda函数来实现,这大大减少了系统作用域中的不必要的代码量。
我真的希望Bevy很快能引入一次性系统,这个crate将变得无关紧要。
安装
cargo add bevy_oneshot
或者将其添加到你的Cargo.toml
[dependencies]
bevy_oheshot = "0.2"
使用方法
use bevy::prelude::*;
use bevy_oneshot::CommandRunOnce;
fn some_system(mut commands: Commands) {
// run once without arguments
commands.run_once(|_query: Query<&Window>| {
// your code here
});
// run once with input arguments
commands.run_once_with(
|input: In<u32>| {
println!("{}", input.0);
},
42,
);
}
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_startup_system(some_system)
.run();
}
兼容性
Bevy版本 | 插件版本 |
---|---|
0.10 |
0.1.0-0.1.1 |
0.11 |
0.2.0 |
贡献
非常欢迎PR。
依赖
约20-29MB
约425K SLoC