#editor #bevy #diagnostics #debugging #camera #control #apps

bevy_editor_pls_default_windows

bevy应用的内置编辑器工具

12个版本 (破坏性)

0.9.0 2024年8月11日
0.8.1 2024年3月6日
0.8.0 2024年2月21日
0.7.0 2023年12月27日
0.2.0 2022年11月13日

1059 in 游戏开发

Download history 530/week @ 2024-04-27 466/week @ 2024-05-04 480/week @ 2024-05-11 547/week @ 2024-05-18 481/week @ 2024-05-25 566/week @ 2024-06-01 396/week @ 2024-06-08 717/week @ 2024-06-15 704/week @ 2024-06-22 389/week @ 2024-06-29 448/week @ 2024-07-06 544/week @ 2024-07-13 512/week @ 2024-07-20 640/week @ 2024-07-27 475/week @ 2024-08-03 605/week @ 2024-08-10

每月2,310次下载
用于 bevy_editor_pls

MIT/Apache

120KB
2.5K SLoC

bevy_editor_pls

⚠️ 这是一个正在开发中的项目:查看缺失的功能,看看你的用例是否尚未得到支持。

为你的bevy游戏添加调试工具,包括

  • 层次结构视图和组件检查器
  • 独立的编辑器相机
  • 一些内置的编辑器面板用于诊断、调试设置
  • 场景导出

这并不是,也不打算与最终的bevy编辑器相提并论。 bevy_editor_pls通过向游戏可执行文件添加编辑器UI,尝试获得一些低垂的果实,而不需要具有良好设计的编辑器架构所固有的复杂性。

如何使用

添加EditorPlugin

+use bevy_editor_pls::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
+       .add_plugins(EditorPlugin::default())
        ...
        .run();
}

editor preview

自定义编辑器面板

use bevy_editor_pls::{egui, prelude::*};
use bevy_editor_pls_core::editor_window::{EditorWindow, EditorWindowContext};

fn main() {
    App::new()
        ...
        .add_editor_window::<MyEditorWindow>()
        ...
        .run();
}

pub struct MyEditorWindow;
struct MyEditorWindowState {
}
impl EditorWindow for MyEditorWindow {
    type State = MyEditorWindowState;
    const NAME: &'static str = "Another editor panel";

    fn ui(world: &mut World, cx: EditorWindowContext, ui: &mut egui::Ui) {
        let currently_inspected = &cx.state::<MyEditorWindow>().unwrap().selected;

        ui.label("Anything can go here");
    }
}

控制

默认控制方式是

  • E 切换编辑器
  • Ctrl+Enter 暂停/恢复时间
  • F 聚焦所选实体
  • T/R/S 显示平移/旋转/缩放操纵杆
  • 双击菜单栏以全屏

相机

  • 2d (Pan/Zoom):任何鼠标按钮用于平移,滚动用于缩放
  • 3d (Free)WASD + Ctrl/Shift + Shift 为自由3D相机提供速度提升
  • 3d (Pan/Orbit)右键单击 用于围绕焦点旋转, 中键鼠标 用于平移
更改默认控制
use bevy_editor_pls::EditorPlugin;
use bevy_editor_pls::controls;
use bevy_editor_pls_default_windows::hierarchy::picking::EditorRayCastSource;

fn main() {
    App::new()
        // ..
        .add_plugin(EditorPlugin)
        .insert_resource(editor_controls())
        .add_startup_system(set_cam3d_controls)
        // ..
        .run();
}

fn editor_controls() -> EditorControls {
    let mut editor_controls = EditorControls::default_bindings();
    editor_controls.unbind(controls::Action::PlayPauseEditor);

    editor_controls.insert(
        controls::Action::PlayPauseEditor,
        controls::Binding {
            input: controls::UserInput::Single(controls::Button::Keyboard(KeyCode::Escape)),
            conditions: vec![controls::BindingCondition::ListeningForText(false)],
        },
    );

    editor_controls
}

fn set_cam3d_controls(
    mut query: Query<&mut bevy_editor_pls::default_windows::cameras::camera_3d_free::FlycamControls>,
) {
    let mut controls = query.single_mut();
    controls.key_up = KeyCode::Q;
    controls.key_down = KeyCode::E;
}

缺失的功能

  • 场景导入
  • 编辑器中不可见实体的可视化(例如,查看摄像机位置)

Bevy 支持表

bevy bevy_editor_pls
0.14 0.9
0.13 0.8
0.12 0.7
0.12 0.6
0.11 0.5
0.10 0.4
0.10 0.3
0.9 0.2
0.8 0.1

依赖项

~42–80MB
~1.5M SLoC