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日

#263 in 游戏开发

Download history 467/week @ 2024-05-04 476/week @ 2024-05-11 545/week @ 2024-05-18 482/week @ 2024-05-25 553/week @ 2024-06-01 403/week @ 2024-06-08 715/week @ 2024-06-15 705/week @ 2024-06-22 398/week @ 2024-06-29 494/week @ 2024-07-06 542/week @ 2024-07-13 584/week @ 2024-07-20 570/week @ 2024-07-27 473/week @ 2024-08-03 787/week @ 2024-08-10 493/week @ 2024-08-17

2,411 下载/每月
用于 4 crates

MIT/Apache

93KB
1.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 (平移/缩放):任何鼠标按钮用于平移,滚动用于缩放
  • 3d (自由)WASD + Ctrl/Shift + Shift 为自由3D相机提供速度加成
  • 3d (平移/环绕)右键单击 用于围绕焦点旋转, 中间鼠标按钮 用于平移
更改默认控件
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–82MB
~1.5M SLoC