3个不稳定版本
0.2.0 | 2021年2月12日 |
---|---|
0.1.1 | 2021年2月11日 |
0.1.0 | 2021年2月11日 |
1888 在 游戏开发 中
7KB
73 行
bevy_event_set
为Bevy 0.4创建事件束的宏
Bevy当前的标准做法是声明枚举类型的事件。这对于许多用例来说是不错的,但在某些情况下,你希望在系统中监听单个事件的同时,仍然能够轻松地发送多种类型的事件(例如,在解析用户输入时)。
使用 event_set
宏,你可以创建一个事件集,允许你发送多种事件类型。
设置
将crate添加到你的 Cargo.toml
依赖项中
[dependencies]
bevy_event_set = "0.1"
Bevy 0.4的一个子crate中的错误阻止了这个crate正常工作。将以下补丁添加到你的 Cargo.toml
以应用修复
[patch.crates-io]
bevy_ecs_macros = { git = "https://github.com/woubuc/bevy", branch = "fix/ecs-macro-systemparam-0.4" }
这个错误在Bevy的PR #1434 中已修复。
使用方法
use bevy::prelude::*;
use bevy_event_set::*;
// Define your events
struct EventOne;
struct EventTwo;
struct EventThree(usize);
// Create an event set named `MyEvents`
event_set!(MyEvents { EventOne, EventTwo, EventThree });
// Use the event set in a system
fn event_emitter_system(mut events: MyEvents) {
events.send(EventOne);
events.send(EventTwo);
events.send(EventThree(42));
}
// Subscribe to events selectively in different systems
fn event_one_listener_system(events: Res<Events<EventOne>>) { }
fn event_two_listener_system(events: Res<Events<EventTwo>>) { }
fn event_three_listener_system(events: Res<Events<EventThree>>) { }
// Add the event set to your app
App::build()
.add_event_set::<MyEvents>();
注意
- 支持Bevy 0.4
- 基本可行,但请注意,代码非常基础
- 欢迎贡献以使其更具可扩展性/用户友好性
依赖项
~15–24MB
~365K SLoC