use bevy::{ diagnostic::{Diagnostics, FrameTimeDiagnosticsPlugin}, prelude::*, }; fn main() { App::build() .add_default_plugins() .add_plugin(FrameTimeDiagnosticsPlugin::default()) .add_startup_system(setup.system()) .add_system(text_update_system.system()) .run(); } fn text_update_system( diagnostics: Res, world: &mut SubWorld, query: &mut Query>, ) { for mut label in query.iter_mut(world) { if let Some(fps) = diagnostics.get(FrameTimeDiagnosticsPlugin::FPS) { if let Some(average) = fps.average() { label.text = format!("FPS: {:.2}", average); } } } } fn setup(asset_server: Res, command_buffer: &mut CommandBuffer) { let font_handle = asset_server.load("assets/fonts/FiraSans-Bold.ttf").unwrap(); command_buffer .build() // 2d camera .entity_with(OrthographicCameraComponents::default()) // texture .entity_with(LabelComponents { node: Node::new(Anchors::TOP_LEFT, Margins::new(0.0, 250.0, 0.0, 60.0)), label: Label { text: "FPS:".to_string(), font: font_handle, style: TextStyle { font_size: 60.0, color: Color::WHITE, }, }, ..Default::default() }); }