#events #bevy #ecs #gamedev

commands_send_event

Bevy泛型事件分发扩展特质

7个版本 (破坏性更新)

0.6.0 2022年11月16日
0.5.0 2022年8月1日
0.4.0 2022年5月26日
0.3.0 2022年5月13日
0.1.1 2022年3月7日

#2298 in 游戏开发

22 每月下载量

MIT/Apache

17KB

命令发送事件

一个扩展特质,允许您在无需检索类型化的事件写入器系统参数的情况下从系统中发送事件。

  • 版本0.9支持Bevy 0.9
  • 版本0.5支持Bevy 0.8
  • 版本0.3 & 0.4支持Bevy 0.7
  • 版本<0.3支持Bevy 0.6

限制

  • 事件不会立即分发,而是在将队列命令应用到World的下一个阶段边界时分发。

用法

使用以下命令将库添加到您的项目中

cargo add commands_send_event

或直接在Cargo.toml中添加依赖项

[dependencies.commands_send_event]
version = "0.6"

然后send_event方法将可用于Commands

use commands_send_event::CommandsSendEvent;

#[derive(Component)]
struct MyEventA(String);

#[derive(Component)]
struct MyEventB(i32);

fn sender(
    mut commands: Commands
) {
    commands.send_event(MyEventA("Hello, World"));
    commands.send_event(MyEventB(42));
}

/examples文件夹中有两个示例,您可以使用它们运行

cargo run --example basic_usage
cargo run --example schedule

AnyEventWriter是覆盖Commands并实现SystemParam的界面。

注意

由于使用World发送事件现在非常容易,所以这个crate现在有点多余。您可以使用commands.add将闭包排队以分发事件,如下所示

commands.add(|world: &mut World| 
    world.send_event(MyEvent)
);

依赖项

~16–33MB
~514K SLoC