#bevy #button #released #plugin #react #helper #component

bevy_button_released_plugin

Bevy助手存储库,允许响应按钮释放

8个版本 (4个破坏性版本)

0.6.0 2024年7月21日
0.6.0-rc.12024年6月20日
0.5.1 2024年5月5日
0.5.0 2024年2月17日
0.1.0 2023年4月6日

#2 in #released

Download history 32/week @ 2024-04-29 112/week @ 2024-05-06 14/week @ 2024-05-20 6/week @ 2024-06-03 5/week @ 2024-06-10 85/week @ 2024-06-17 8/week @ 2024-06-24 25/week @ 2024-07-01 66/week @ 2024-07-15 43/week @ 2024-07-22 7/week @ 2024-07-29

每月下载量:133

MIT许可协议

31KB

Bevy按钮释放插件

crates.io license crates.io

此存储库使Bevy应用程序能够意识到按钮的释放,而不是在点击后立即做出反应。我认为这将在下一个版本中得到解决,但在此之前,这可能对某些人有所帮助。

安装

cargo add bevy_button_released_plugin

使用方法

在应用程序创建过程中添加ButtonsReleasedPlugin,然后GameButton组件将被添加到按钮上,可以像下面示例中的button_system函数那样对其做出反应。可以通过禁用默认的"auto_add"功能来禁用自动添加GameButton

use bevy::prelude::*;
use bevy_button_released_plugin::{ButtonReleasedEvent, ButtonsReleasedPlugin};

pub fn main() {
    let mut app = App::new();
    app.add_plugins(DefaultPlugins)
        .add_plugins(ButtonsReleasedPlugin)
        .add_systems(Startup, setup)
        .add_systems(Update, button_system);
    app.run();
}

fn button_system(
    mut reader: EventReader<ButtonReleasedEvent>,
    q: Query<&Name>,
    mut q_text: Query<&mut Text>,
) {
    let mut text = q_text.single_mut();
    for event in reader.read() {
        if let Ok(button_name) = q.get(**event) {
            text.sections[0].value = format!("Last button released: {}", button_name);
        }
    }
}

fn setup(mut commands: Commands) {
    // Camera
    commands.spawn(Camera2dBundle::default());

    // root node
    commands
        .spawn(NodeBundle {
            style: Style {
                width: Val::Percent(100.0),
                height: Val::Percent(100.0),
                justify_content: JustifyContent::SpaceEvenly,
                flex_direction: FlexDirection::Column,
                ..default()
            },
            ..default()
        })
        .with_children(|parent| {
            let style: Style = Style {
                margin: UiRect::all(Val::Px(18.0)),
                padding: UiRect::all(Val::Px(30.0)),
                ..default()
            };
            parent.spawn(
                TextBundle::from_section(
                    "Press any button below",
                    TextStyle {
                        font_size: 30.0,
                        ..default()
                    },
                )
                .with_text_justify(JustifyText::Center)
                .with_style(style.clone()),
            );
            for (text, color) in [
                ("Green", Color::GREEN),
                ("Red", Color::ORANGE_RED),
                ("Yellow", Color::YELLOW),
            ] {
                parent.spawn((
                    ButtonBundle {
                        style: style.clone(),
                        background_color: BackgroundColor(color),
                        ..default()
                    },
                    Name::new(text),
                ));
            }
        });
}

Bevy兼容性表

Bevy版本 存储库版本
0.14 0.6
0.13 0.5
0.12 0.3,0.4
0.11 0.2
0.10 0.1

依赖项

~38–74MB
~1.5M SLoC