2个不稳定版本
0.2.0 | 2023年9月16日 |
---|---|
0.1.0 | 2023年9月9日 |
#2347 in 游戏开发
6KB
moshimoshi
一个用于简化在bevy中处理命令回调的小型crate。
use bevy::prelude::*;
use moshimoshi::*;
#[derive(Component)]
struct Button;
#[derive(Component, Deref, DerefMut)]
struct OnClick(EntityCallback);
#[derive(Component, Deref, DerefMut)]
struct Counter(u32);
#[derive(Component)]
struct Text(String);
fn setup(mut commands: Commands) {
commands.spawn((
Button,
Counter(0),
Text("Click Me".to_string()),
OnClick(moshi!([e: Entity], counter: Query<&mut Counter> => {
**counter.get_mut(e).unwrap() += 1;
}))
));
}
impl Button {
fn update(mut commands: Commands, buttons: Query<(Entity, &OnClick), Changed<Button>>) {
for (entity, callback) in buttons.iter() {
commands.add(RunEntityCallback { entity, func: **callback });
}
}
}
fn main() {
App::new()
.add_systems(Update, (Button::update, apply_deferred).chain())
.run()
}
版本表
Bevy版本 | moshimoshi版本 |
---|---|
0.11 | 0.1 - 0.2 |
依赖
~18–28MB
~415K SLoC