This crate makes Bevy application aware of the release of the button instead of reacting right after clicking. I think it will be addressed in next release but until then it could be helpful for some people.
cargo add bevy_button_released_plugin
Add ButtonsReleasedPlugin
during app creation process, GameButton
component to buttons that you want to react to it like in button_system
function in example below.
```rust use bevy::prelude::*; use bevybuttonreleased_plugin::{ButtonReleasedEvent, ButtonsReleasedPlugin, GameButton};
pub fn main() { let mut app = App::new(); app.addplugins(DefaultPlugins) .addplugins(ButtonsReleasedPlugin) .addsystems(Startup, setup) .addsystems(Update, button_system); app.run(); }
fn buttonsystem(mut reader: EventReader
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| {
for (text, color) in [
("GreenButton", Color::GREEN),
("RedButton", Color::ORANGE_RED),
("YellowButton", Color::YELLOW),
] {
parent.spawn((
ButtonBundle {
style: Style {
margin: UiRect::all(Val::Px(18.0)),
padding: UiRect::all(Val::Px(30.0)),
..default()
},
background_color: BackgroundColor(color),
..default()
},
GameButton::default(),
Name::new(text),
));
}
});
} ```
Bevy version | Crate version --- | --- 0.11 | 0.2.0 0.10 | 0.1.0