mirror of
https://github.com/bevyengine/bevy
synced 2024-11-10 07:04:33 +00:00
1b1105e327
# Objective Fixes #15142 Split this off from #15163 as it's a very simple fix. ## Solution UiScale was applied twice to border radius, remove the second application. ## Testing You can use this modified button example from the issue for testing: ``` use bevy::{color::palettes::basic::*, prelude::*, winit::WinitSettings}; fn main() { App::new() .add_plugins(DefaultPlugins) // Only run the app when there is user input. This will significantly reduce CPU/GPU use. .insert_resource(UiScale(2.)) .insert_resource(WinitSettings::desktop_app()) .add_systems(Startup, setup) .add_systems(Update, button_system) .run(); } const NORMAL_BUTTON: Color = Color::srgb(0.15, 0.15, 0.15); const HOVERED_BUTTON: Color = Color::srgb(0.25, 0.25, 0.25); const PRESSED_BUTTON: Color = Color::srgb(0.35, 0.75, 0.35); fn button_system( mut interaction_query: Query< ( &Interaction, &mut BackgroundColor, &mut BorderColor, &Children, ), (Changed<Interaction>, With<Button>), >, mut text_query: Query<&mut Text>, ) { for (interaction, mut color, mut border_color, children) in &mut interaction_query { let mut text = text_query.get_mut(children[0]).unwrap(); match *interaction { Interaction::Pressed => { text.sections[0].value = "Press".to_string(); *color = PRESSED_BUTTON.into(); border_color.0 = RED.into(); } Interaction::Hovered => { text.sections[0].value = "Hover".to_string(); *color = HOVERED_BUTTON.into(); border_color.0 = Color::WHITE; } Interaction::None => { text.sections[0].value = "Button".to_string(); *color = NORMAL_BUTTON.into(); border_color.0 = Color::BLACK; } } } } fn setup(mut commands: Commands, asset_server: Res<AssetServer>) { // ui camera commands.spawn(Camera2dBundle::default()); commands .spawn(NodeBundle { style: Style { width: Val::Percent(100.0), height: Val::Percent(100.0), align_items: AlignItems::Center, justify_content: JustifyContent::Center, ..default() }, ..default() }) .with_children(|parent| { parent .spawn(ButtonBundle { style: Style { width: Val::Px(250.0), height: Val::Px(100.0), border: UiRect::all(Val::Px(25.0)), // horizontally center child text justify_content: JustifyContent::Center, // vertically center child text align_items: AlignItems::Center, ..default() }, border_color: BorderColor(Color::BLACK), border_radius: BorderRadius::all(Val::Px(25.)), background_color: NORMAL_BUTTON.into(), ..default() }) .with_child(TextBundle::from_section( "Button", TextStyle { font: asset_server.load("fonts/FiraSans-Bold.ttf"), font_size: 40.0, color: Color::srgb(0.9, 0.9, 0.9), }, )); parent .spawn(NodeBundle { style: Style { width: Val::Px(150.0), padding: UiRect::vertical(Val::Px(25.)), height: Val::Px(100.0), align_items: AlignItems::Stretch, justify_content: JustifyContent::Stretch, ..Default::default() }, ..default() }) .with_child(NodeBundle { style: Style { flex_basis: Val::Percent(100.), ..Default::default() }, background_color: RED.into(), ..Default::default() }); }); } ``` ## Showcase Using the modified button example ### main <img alt="366023197-e6124f07-e522-4514-bd8e-7986ac32890c" src="https://github.com/user-attachments/assets/b7b909ed-1184-4d9d-b50b-e30f4c1f76b2"> ### this PR ![image](https://github.com/user-attachments/assets/89b89a2f-533f-41bd-b2cb-4743aec6519e) |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |