31个版本 (破坏性更新)

0.25.1 2024年8月11日
0.25.0 2024年7月6日
0.24.0 2024年4月19日
0.23.0 2024年2月21日
0.3.0 2021年1月24日

#detail 中排名 55

Download history 4731/week @ 2024-05-04 4562/week @ 2024-05-11 4901/week @ 2024-05-18 4707/week @ 2024-05-25 4543/week @ 2024-06-01 3073/week @ 2024-06-08 4666/week @ 2024-06-15 4664/week @ 2024-06-22 2633/week @ 2024-06-29 3940/week @ 2024-07-06 4626/week @ 2024-07-13 5445/week @ 2024-07-20 5836/week @ 2024-07-27 4573/week @ 2024-08-03 7099/week @ 2024-08-10 4454/week @ 2024-08-17

每月下载量 22,802
103 个库中使用(通过 bevy-inspector-egui

MIT/Apache

16KB
185

bevy-inspector-egui

示例可以在 ./crates/bevy-inspector-egui/examples 中找到。

该库包含

  • 用于在 reflect_inspector 中显示 Reflect 值的通用机械
  • inspector_options 中将任意选项与字段和枚举变体关联的方法
  • 用于在 bevy_inspector 中显示 bevy 资源、实体和资产的实用函数
  • 一些快速插件,在 quick 中,让您无需编写任何代码即可开始使用。

变更日志可以在 docs/CHANGELOG.md 中找到。

用例1:快速插件

这些插件可以轻松添加到您的应用程序中,但无法自定义显示和内容。

WorldInspectorPlugin

显示世界中的实体、资源和资产。

image of the world inspector

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

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

ResourceInspectorPlugin

在一个窗口中显示单个资源。

image of the resource inspector

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();
}

还有 StateInspectorPluginAssetInspectorPlugin

用例2:手动UI

quick 插件不允许自定义 egui 窗口或其内容,但您可以轻松构建自己的 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);
        });
    });
}

将其与egui_dock这样的crate配合使用,你就能在不到100行代码内拥有自己的编辑器:examples/egui_dock.rsegui_dock示例图片

Cargo功能

  • highlight_changes - 每帧突出显示更改的值。理想情况下,这应该是可运行时配置的,但它作为临时解决方案被这样实现。如果您想在运行时配置此功能,请提交一个issue告诉我这是一个更高的优先级。
  • bevy_pbr(默认):为bevy_pbr类型注册默认选项。如果您不使用bevy_pbr,应禁用此功能以减少依赖性足迹。

常见问题解答

问:如何在世界检查器中更改实体的名称?

答:您可以插入Name组件。

问:如果我只是想显示单个值而不传递整个&mut World怎么办?

答:您可以使用reflect_inspector::ui_for_value。请注意,显示如Handle<StandardMaterial>这样的内容将无法显示资产值。

问:我能否更改类型的显示方式?

答:实现InspectorPrimitive并调用app.register_type_data::<T, InspectorEguiImpl>

Bevy支持表

bevy bevy-inspector-egui
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

依赖项

~250–700KB
~17K SLoC