Skip to content

jamesbeilby/bevy-inspector-egui

 
 

Repository files navigation

bevy-inspector-egui


This crate provides a debug interface using egui where you can visually edit the values of your components live.

demonstration with a running bevy app

Usage

You can either inspect a single resource using the InspectorPlugin, or use the WorldInspectorPlugin to inspect all entities.

InspectorPlugin

use bevy::prelude::*;
use bevy_inspector_egui::{InspectorPlugin, Inspectable};

#[derive(Inspectable, Default)]
struct Data {
    should_render: bool,
    text: String,
    #[inspectable(min = 42.0, max = 100.0)]
    size: f32,
}

fn main() {
    App::build()
        .add_plugins(DefaultPlugins)
        .add_plugin(InspectorPlugin::<Data>::new())
        .run();
}

World inspector

use bevy::prelude::*;
use bevy_inspector_egui::WorldInspectorPlugin;

fn main() {
    App::build()
        .add_plugins(DefaultPlugins)
        .add_plugin(WorldInspectorPlugin::new())
        .run();
}

world inspector ui

You can configure the WorldInspectorPlugin by inserting the WorldInspectorParams resource. If you want to only display some components, you may want to use the InspectorQuery instead.

If you want custom types to be displayed in the inspector, you'll need to register them on the InspectableRegistry:

use bevy::prelude::*;
use bevy_inspector_egui::{WorldInspector, RegisterInspectable};

#[derive(Reflect)]
struct ReflectedType;

#[derive(Reflect)]
struct InspectableType;

fn main() {
  App::build()
    .add_plugins(DefaultPlugins)
    .add_plugin(WorldInspectorPlugin::new())
    .register_type::<ReflectedType>()
    .register_inspectable::<InspectableType>()
    .run();
}

More examples (with pictures) can be found in the examples folder.

Bevy support table

bevy bevy-inspector-egui
0.5-0.6 0.5
0.5 0.4
0.4 0.1-0.3

About

Inspector plugin for the bevy game engine

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%