8个版本 (4个破坏性版本)
0.6.0 | 2024年7月21日 |
---|---|
0.6.0-rc.1 | 2024年6月20日 |
0.5.1 | 2024年5月5日 |
0.5.0 | 2024年2月17日 |
0.1.0 | 2023年4月6日 |
#2 in #released
每月下载量:133
31KB
Bevy按钮释放插件
此存储库使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