//! Showcase how to use and configure FPS overlay. use bevy::{ dev_tools::fps_overlay::{FpsOverlayConfig, FpsOverlayPlugin}, prelude::*, text::FontSmoothing, }; struct OverlayColor; impl OverlayColor { const RED: Color = Color::srgb(1.0, 0.0, 0.0); const GREEN: Color = Color::srgb(0.0, 1.0, 0.0); } fn main() { App::new() .add_plugins(( DefaultPlugins, FpsOverlayPlugin { config: FpsOverlayConfig { text_config: TextStyle { // Here we define size of our overlay font_size: 42.0, // We can also change color of the overlay color: OverlayColor::GREEN, // If we want, we can use a custom font font: default(), // We could also disable font smoothing, font_smoothing: FontSmoothing::default(), }, enabled: true, }, }, )) .add_systems(Startup, setup) .add_systems(Update, customize_config) .run(); } fn setup(mut commands: Commands) { // We need to spawn a camera (2d or 3d) to see the overlay commands.spawn(Camera2d); // Instruction text 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(|c| { c.spawn(Text::new(concat!( "Press 1 to toggle the overlay color.\n", "Press 2 to decrease the overlay size.\n", "Press 3 to increase the overlay size.\n", "Press 4 to toggle the overlay visibility." ))); }); } fn customize_config(input: Res>, mut overlay: ResMut) { if input.just_pressed(KeyCode::Digit1) { // Changing resource will affect overlay if overlay.text_config.color == OverlayColor::GREEN { overlay.text_config.color = OverlayColor::RED; } else { overlay.text_config.color = OverlayColor::GREEN; } } if input.just_pressed(KeyCode::Digit2) { overlay.text_config.font_size -= 2.0; } if input.just_pressed(KeyCode::Digit3) { overlay.text_config.font_size += 2.0; } if input.just_pressed(KeyCode::Digit4) { overlay.enabled = !overlay.enabled; } }