3 个不稳定版本
0.13.0 | 2024 年 2 月 27 日 |
---|---|
0.11.1 | 2023 年 8 月 31 日 |
0.11.0 | 2023 年 8 月 31 日 |
#365 在 游戏开发
在 bevy_veilid 中使用
13KB
152 代码行
bevy-wasm-tasks
一个简单的 Bevy 插件,它将 futures(包括 !Send futures)在 WASM 上通过 wasm_bindgen_futures 运行集成到 Bevy 应用中。
此代码几乎完全基于出色的 bevy-tokio-tasks,只是针对 wasm_bindgen_futures 进行了适配。
如何使用
如何初始化此插件
要初始化插件,只需在初始化您的 Bevy 应用时安装 WASMTasksPlugin
。
如何创建后台任务
要从 Bevy 系统函数创建后台任务,将 WASMTasksRuntime
作为资源参数添加,并调用 spawn_background_task
函数。
fn example_system(runtime: ResMut<WASMTasksRuntime>) {
runtime.spawn_background_task(|_ctx| async move {
log::info!("This task is running in a WASM future");
});
}
如何与 Bevy 同步
通常,后台任务需要在某些点与主 Bevy 应用同步。您可以通过在传递给每个后台任务的 TaskContext
上调用 run_on_main_thread
函数来实现这一点。
fn example_system(runtime: ResMut<WASMTasksRuntime>) {
runtime.spawn_background_task(|mut ctx| async move {
log::info!("This print executes from a background WASM future");
ctx.run_on_main_thread(move |ctx| {
// The inner context gives access to a mutable Bevy World reference.
let _world: &mut World = ctx.world;
}).await;
});
}
版本兼容性
此包的主版本和次要版本号将与 Bevy 相匹配。为了允许此包在 Bevy 更新之间发布更新,修补版本可以独立于 Bevy 的发布周期进行递增。
bevy-tokio-tasks 版本 | bevy 版本 | tokio 版本 |
---|---|---|
0.11.0 | 0.11.0 | 1 |
0.10.2 | 0.10.1 | 1 |
0.10.1 | 0.10.0 | 1 |
0.10.0 | 0.10.0 | 1 |
0.9.5 | 0.9.1 | 1 |
0.9.4 | 0.9.1 | 1 |
0.9.3 | 0.9.1 | 1 |
0.9.2 | 0.9.1 | 1 |
0.9.1 | 0.9.1 | 1 |
0.9.0 | 0.9.1 | 1 |
依赖项
~16MB
~265K SLoC