use crate::settings; use bevy::prelude::*; use bevy::diagnostic::{DiagnosticsStore, FrameTimeDiagnosticsPlugin}; pub struct OutFlyHudPlugin; impl Plugin for OutFlyHudPlugin { fn build(&self, app: &mut App) { app.add_systems(Startup, setup); app.add_systems(Update, (update, handle_input)); app.insert_resource(FPSUpdateTimer(Timer::from_seconds(0.25, TimerMode::Repeating))); } } const FONT: &str = "tmp/fonts/NotoSansSC-Thin.ttf"; #[derive(Component)] struct FpsText; #[derive(Resource)] struct FPSUpdateTimer(Timer); fn setup( mut commands: Commands, settings: Res, asset_server: Res, ) { let visibility = if settings.ar_active { Visibility::Inherited } else { Visibility::Hidden }; let mut bundle_fps = TextBundle::from_sections([ TextSection::new( " 帧率 ", TextStyle { font: asset_server.load(FONT), font_size: settings.font_size_hud, color: Color::GRAY, ..default() }, ), TextSection::new( "", TextStyle { font: asset_server.load(FONT), font_size: settings.font_size_hud, color: Color::GRAY, ..default() } ), ]); bundle_fps.visibility = visibility; commands.spawn(( bundle_fps, FpsText, )); } fn update( diagnostics: Res, time:Res