1个不稳定版本
0.0.1 | 2024年8月2日 |
---|
#21 in #miniquad
每月 99次下载
7KB
bevy_ecs for miniquad/macroquad without wasm-bindgen
为什么?
不知道,减少冗余 & 更快编译?
它是如何工作的?
通过修改bevy crate以删除功能或更改实现。截至0.14.0,更改包括
- 移除
bevy_ecs
的所有多线程相关功能 - 移除
bevy_app
中的schedule_runner和panic_handler插件 - 在
bevy_app
中移除对bevy_time
的使用 - 修改
bevy_utils
以使用miniquad::date::now()
而不是web-time
如何使用它?
通过将以下行添加到.cargo/config.toml
[patch.crates-io]
bevy_ecs = { git = "https://github.com/yui-915/quad_bevy", branch = "[email protected]" }
bevy_app = { git = "https://github.com/yui-915/quad_bevy", branch = "[email protected]" }
bevy_utils = { git = "https://github.com/yui-915/quad_bevy", branch = "[email protected]" }
示例
点击显示
您可以为网络构建它,就像任何其他macroquad项目一样,它将无需任何额外设置即可工作
use bevy_app::prelude::*;
use bevy_ecs::prelude::*;
use macroquad::prelude::*;
fn main() {
App::new()
.add_plugins(MacroquadRunner("Hello, world!"))
.add_systems(Startup, spawn_squares)
.add_systems(Update, (move_squares, bg, draw_squares).chain())
.run();
}
#[derive(Component)]
struct Position(f32, f32);
fn spawn_squares(mut cmds: Commands) {
cmds.spawn(Position(0.0, 100.0));
cmds.spawn(Position(450.0, 500.0));
}
fn bg() {
clear_background(ORANGE);
}
fn move_squares(mut query: Query<&mut Position>) {
for mut position in &mut query {
position.0 += 10.0;
if position.0 > screen_width() {
position.0 = 0.0;
}
}
}
fn draw_squares(query: Query<&Position>) {
for position in &query {
draw_rectangle(position.0, position.1, 100.0, 100.0, BLACK);
}
}
// Example bevy runner plugin for macroquad
pub struct MacroquadRunner(pub &'static str);
impl Plugin for MacroquadRunner {
fn build(&self, app: &mut App) {
let window_title = self.0;
app.set_runner(|mut app| {
macroquad::Window::new(window_title, async move {
loop {
app.update();
next_frame().await;
}
});
bevy_app::AppExit::Success
});
}
}
我应该使用它吗?
可能不是,这个项目高度实验性,可能由于不兼容的更改或不同的miniquad版本而破坏您的代码
为什么这是一个crate?
只是为了在crates.io上显示,否则它什么都不做。您可以在不下载此crate的情况下使用修补过的bevy crates。
许可证
我将保留原始bevy crates的“MIT或Apache 2.0”许可证