#游戏引擎 #bevy #引擎 #游戏

bevy_fallible

为Bevy游戏引擎添加可失败系统的简单插件

1个不稳定版本

0.4.0 2020年12月21日

#652 in #游戏引擎

MIT 协议

5KB

bevy_fallible

Crates.io Docs.rs License

一个简单的插件,用于安装到bevy的可失败系统

API

库提供了两个主要组件:一个宏#[fallible_system]和一个结构体SystemErrorEvent。本质上,每个fallible_system如果产生错误,将生成一个SystemErrorEvent事件,就是这样。

为了简化使用,有一个fallibleSystemPlugin来注册您需要接收错误事件的所有内容。

示例

// Some system that might fail
#[fallible_system]
fn system(asset_server: Res<AssetServer>) -> anyhow::Result<()> {
    let handle: Handle<Texture> = asset_server.load("texture")?;
}

// Let's make another system to read every event about other
// systems failures and report !
#[derive(Default)]
struct ReportSystemState{ reader: EventReader<SystemErrorEvent> }
fn report_system(mut state: Local<ReportSystemState>, mut events: ResMut<Events<SystemErrorEvent>>) {
    for event in state.reader.iter(&mut events) {
        println!("Error in {}: {}", event.system_name, event.error); 
    }
}

fn main() {
    App::build()
        .add_plugin(fallibleSystemPlugin)
        .add_startup_system(system.system())
        .add_system(report_system.system())
        .run();
}

依赖项

~6–8.5MB
~152K SLoC