Rust游戏开发工具库bevy_dev_tools的使用:Bevy引擎高效调试与开发辅助插件
Rust游戏开发工具库bevy_dev_tools的使用:Bevy引擎高效调试与开发辅助插件
简介
bevy_dev_tools是Bevy游戏引擎的一个开发者工具库,提供了一系列高效的调试和开发辅助功能。它包含以下主要特性:
- 实体检查器
- 性能分析工具
- 场景管理工具
- 热重载支持
安装
在项目目录中运行以下Cargo命令:
cargo add bevy_dev_tools
或在Cargo.toml中添加:
bevy_dev_tools = "0.16.1"
使用示例
下面是内容中提供的示例代码:
use bevy::prelude::*;
use bevy_dev_tools::DevToolsPlugin;
fn main() {
App::new()
// 添加Bevy默认插件
.add_plugins(DefaultPlugins)
// 添加DevTools插件
.add_plugins(DevToolsPlugin)
// 添加你的游戏系统
.add_systems(Startup, setup)
.run();
}
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
// 添加一个简单的3D场景
commands.spawn(PbrBundle {
mesh: meshes.add(Mesh::from(shape::Plane::from_size(5.0))),
material: materials.add(Color::rgb(0.3, 0.5, 0.3).into()),
..default()
});
commands.spawn(PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
transform: Transform::from_xyz(0.0, 0.5, 0.0),
..default()
});
// 添加光源
commands.spawn(PointLightBundle {
point_light: PointLight {
intensity: 1500.0,
shadows_enabled: true,
..default()
},
transform: Transform::from_xyz(4.0, 8.0, 4.0),
..default()
});
// 添加相机
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
..default()
});
}
完整示例demo
下面是一个更完整的示例,展示如何使用bevy_dev_tools的各种功能:
use bevy::prelude::*;
use bevy_dev_tools::DevToolsPlugin;
fn main() {
App::new()
// 添加Bevy默认插件
.add_plugins(DefaultPlugins)
// 添加DevTools插件
.add_plugins(DevToolsPlugin)
// 添加你的游戏系统
.add_systems(Startup, setup)
.add_systems(Update, (keyboard_input_system, rotate_cube))
.run();
}
// 设置场景
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
asset_server: Res<AssetServer>,
) {
// 添加平面
commands.spawn(PbrBundle {
mesh: meshes.add(Mesh::from(shape::Plane::from_size(5.0))),
material: materials.add(Color::rgb(0.3, 0.5, 0.3).into()),
..default()
});
// 添加可旋转的立方体
commands.spawn((
PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
transform: Transform::from_xyz(0.0, 0.5, 0.0),
..default()
},
Rotatable, // 标记为可旋转的实体
));
// 添加光源
commands.spawn(PointLightBundle {
point_light: PointLight {
intensity: 1500.0,
shadows_enabled: true,
..default()
},
transform: Transform::from_xyz(4.0, 8.0, 4.0),
..default()
});
// 添加相机
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
..default()
});
}
// 可旋转标记组件
#[derive(Component)]
struct Rotatable;
// 旋转立方体的系统
fn rotate_cube(
time: Res<Time>,
mut query: Query<&mut Transform, With<Rotatable>>,
) {
for mut transform in &mut query {
transform.rotate_y(time.delta_seconds());
}
}
// 处理键盘输入的系统
fn keyboard_input_system(
keys: Res<Input<KeyCode>>,
mut toggle: Local<bool>,
) {
if keys.just_pressed(KeyCode::F1) {
println!("按F1键打开实体检查器");
}
if keys.just_pressed(KeyCode::F2) {
println!("按F2键打开性能分析面板");
}
if keys.just_pressed(KeyCode::F3) {
println!("按F3键打开场景管理工具");
}
if keys.just_pressed(KeyCode::T) {
*toggle = !*toggle;
println!("热重载功能状态: {}", *toggle);
}
}
主要功能
-
实体检查器:按
F1
键打开实体检查器,查看和编辑场景中的所有实体和组件。 -
性能分析:按
F2
键打开性能分析面板,查看帧率和系统执行时间。 -
场景管理:按
F3
键打开场景管理工具,可以保存和加载场景状态。 -
热重载:支持资源的热重载,修改资源文件后会自动重新加载。
许可证
bevy_dev_tools采用双重许可:
- MIT许可证
- Apache 2.0许可证
1 回复
Bevy_dev_tools:Bevy引擎高效调试与开发辅助插件
简介
bevy_dev_tools 是一个为 Bevy 游戏引擎设计的开发工具库,旨在提高开发效率和简化调试过程。它为 Bevy 开发者提供了一系列实用功能,包括场景检查、实体操作、性能监控等。
安装方法
在项目的 Cargo.toml
中添加依赖:
[dependencies]
bevy = "0.11"
bevy_dev_tools = "0.11" # 确保版本与bevy主版本匹配
主要功能及使用示例
1. 场景检查器
use bevy::prelude::*;
use bevy_dev_tools::DevToolsPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(DevToolsPlugin)
.add_systems(Startup, setup)
.run();
}
fn setup(mut commands: Commands) {
commands.spawn(Camera2dBundle::default());
commands.spawn(SpriteBundle {
sprite: Sprite {
color: Color::RED,
custom_size: Some(Vec2::new(100.0, 100.0)),
..default()
},
..default()
});
}
运行后按 F1
键可以打开场景检查器,查看所有实体和组件。
2. 实体选择工具
use bevy_dev_tools::DevPickable;
fn setup(mut commands: Commands) {
commands.spawn((
SpriteBundle {
sprite: Sprite {
color: Color::RED,
custom_size: Some(Vec2::new(100.0, 100.0)),
..default()
},
..default()
},
DevPickable, // 添加此组件使实体可选择
));
}
添加 DevPickable
组件后,可以在场景检查器中点击选择实体。
3. 性能监控
use bevy_dev_tools::DevStatsPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(DevStatsPlugin) // 添加性能监控插件
.run();
}
添加 DevStatsPlugin
后,按 F2
可以显示帧率、内存使用等性能指标。
4. 热重载功能
use bevy_dev_tools::DevHotReloadPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(DevHotReloadPlugin::new("assets")) // 监控assets目录变化
.run();
}
设置后,修改assets目录中的资源文件会自动重新加载。
5. 调试绘制
use bevy_dev_tools::DevDebugDrawPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(DevDebugDrawPlugin) // 添加调试绘制功能
.run();
}
fn debug_draw_system(mut gizmos: Gizmos) {
gizmos.circle_2d(Vec2::ZERO, 50.0, Color::GREEN); // 绘制调试圆形
}
高级配置
可以自定义工具的行为:
use bevy_dev_tools::{DevToolsPlugin, DevToolsConfig};
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(DevToolsPlugin {
config: DevToolsConfig {
inspector_key: KeyCode::F3, // 修改打开检查器的快捷键
stats_key: KeyCode::F4, // 修改性能面板快捷键
..default()
},
})
.run();
}
完整示例代码
下面是一个整合了bevy_dev_tools主要功能的完整示例:
use bevy::prelude::*;
use bevy_dev_tools::{
DevToolsPlugin, DevPickable, DevStatsPlugin,
DevHotReloadPlugin, DevDebugDrawPlugin
};
fn main() {
App::new()
// 添加Bevy默认插件
.add_plugins(DefaultPlugins)
// 添加开发工具插件
.add_plugins(DevToolsPlugin) // 场景检查器
.add_plugins(DevStatsPlugin) // 性能监控
.add_plugins(DevHotReloadPlugin::new("assets")) // 热重载
.add_plugins(DevDebugDrawPlugin) // 调试绘制
// 自定义工具配置
.insert_resource(DevToolsConfig {
inspector_key: KeyCode::F1,
stats_key: KeyCode::F2,
..default()
})
// 添加系统
.add_systems(Startup, setup)
.add_systems(Update, debug_draw_system)
.run();
}
fn setup(mut commands: Commands) {
// 添加2D相机
commands.spawn(Camera2dBundle::default());
// 创建一个可选择的可视实体
commands.spawn((
SpriteBundle {
sprite: Sprite {
color: Color::RED,
custom_size: Some(Vec2::new(100.0, 100.0)),
..default()
},
transform: Transform::from_xyz(0.0, 0.0, 0.0),
..default()
},
DevPickable, // 使实体可选择
));
// 创建一个普通实体
commands.spawn(SpriteBundle {
sprite: Sprite {
color: Color::BLUE,
custom_size: Some(Vec2::new(50.0, 50.0)),
..default()
},
transform: Transform::from_xyz(100.0, 0.0, 0.0),
..default()
});
}
// 调试绘制系统
fn debug_draw_system(mut gizmos: Gizmos) {
// 在原点绘制一个绿色圆形
gizmos.circle_2d(Vec2::ZERO, 50.0, Color::GREEN);
// 绘制一条调试线
gizmos.line_2d(Vec2::new(-100.0, 0.0), Vec2::new(100.0, 0.0), Color::YELLOW);
}
注意事项
- 建议仅在开发环境中使用,发布时应移除这些插件
- 插件版本需要与Bevy主版本匹配
- 某些功能可能会影响性能,只在需要时启用
bevy_dev_tools 可以显著提升Bevy开发的效率和调试体验,特别是对于复杂场景的管理和性能优化有很大帮助。