Crates.io | bevy-inspector-egui |
lib.rs | bevy-inspector-egui |
version | |
source | src |
created_at | 2021-01-18 17:28:53.228789 |
updated_at | 2024-10-14 13:55:36.599981 |
description | Inspector plugin for the bevy game engine |
homepage | |
repository | https://github.com/jakobhellermann/bevy-inspector-egui/ |
max_upload_size | |
id | 343592 |
Cargo.toml error: | TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
Examples can be found at ./crates/bevy-inspector-egui/examples
.
This crate contains
Reflect
values in reflect_inspector,The changelog can be found at docs/CHANGELOG.md
.
These plugins can be easily added to your app, but don't allow for customization of the presentation and content.
Displays the world's entities, resources and assets.
use bevy::prelude::*;
use bevy_inspector_egui::quick::WorldInspectorPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(WorldInspectorPlugin::new())
.run();
}
Display a single resource in a window.
use bevy::prelude::*;
use bevy_inspector_egui::prelude::*;
use bevy_inspector_egui::quick::ResourceInspectorPlugin;
// `InspectorOptions` are completely optional
#[derive(Reflect, Resource, Default, InspectorOptions)]
#[reflect(Resource, InspectorOptions)]
struct Configuration {
name: String,
#[inspector(min = 0.0, max = 1.0)]
option: f32,
}
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.init_resource::<Configuration>() // `ResourceInspectorPlugin` won't initialize the resource
.register_type::<Configuration>() // you need to register your type to display it
.add_plugins(ResourceInspectorPlugin::<Configuration>::default())
// also works with built-in resources, as long as they are `Reflect`
.add_plugins(ResourceInspectorPlugin::<Time>::default())
.run();
}
There is also the StateInspectorPlugin
and the AssetInspectorPlugin
.
The quick plugins don't allow customization of the egui window or its content, but you can easily build your own UI:
use bevy::prelude::*;
use bevy_egui::EguiPlugin;
use bevy_inspector_egui::prelude::*;
use std::any::TypeId;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(EguiPlugin)
.add_plugins(bevy_inspector_egui::DefaultInspectorConfigPlugin) // adds default options and `InspectorEguiImpl`s
.add_systems(Update, inspector_ui)
.run();
}
fn inspector_ui(world: &mut World) {
let Ok(egui_context) = world
.query_filtered::<&mut EguiContext, With<PrimaryWindow>>()
.get_single(world)
else {
return;
};
let mut egui_context = egui_context.clone();
egui::Window::new("UI").show(egui_context.get_mut(), |ui| {
egui::ScrollArea::vertical().show(ui, |ui| {
// equivalent to `WorldInspectorPlugin`
bevy_inspector_egui::bevy_inspector::ui_for_world(world, ui);
egui::CollapsingHeader::new("Materials").show(ui, |ui| {
bevy_inspector_egui::bevy_inspector::ui_for_assets::<StandardMaterial>(world, ui);
});
ui.heading("Entities");
bevy_inspector_egui::bevy_inspector::ui_for_world_entities(world, ui);
});
});
}
Pair this with a crate like egui_dock
and you have your own editor in less than 100 lines: examples/egui_dock.rs
.
highlight_changes
- highlight changed values every frame.
Ideally this should be runtime-configurable, but it was implemented like this as a stopgap solution. If you'd like to configure this at runtime, please open an issue to let me know it's more of a priority.bevy_pbr
(default): register default options for bevy_pbr
types. You should disable this if you don't use bevy_pbr
to reduce the dependency footprint.Q: How do I change the names of the entities in the world inspector?
A: You can insert the Name
component.
Q: What if I just want to display a single value without passing in the whole &mut World
?
A: You can use reflect_inspector::ui_for_value
. Note that displaying things like Handle<StandardMaterial>
won't be able to display the asset's value.
Q: Can I change how exactly my type is displayed?
A: Implement InspectorPrimitive
and call app.register_type_data::<T, InspectorEguiImpl>
.
bevy | bevy-inspector-egui |
---|---|
0.14 | 0.27 |
0.14 | 0.26 |
0.14 | 0.25 |
0.13 | 0.24 |
0.13 | 0.23 |
0.12 | 0.22 |
0.12 | 0.21 |
0.11 | 0.19-0.20 |
0.10 | 0.18 |
0.9 | 0.14-0.17 |
0.8 | 0.12-0.13 |
0.7 | 0.10-0.11 |
0.6 | 0.9 |
0.6 | 0.8 |
0.6 | 0.7 |
0.5 | 0.5-0.6 |
0.5 | 0.4 |
0.4 | 0.1-0.3 |