参考文章
Bevy 的核心原则之一是模块化。所有 Bevy 引擎功能都作为插件 --- 代码集合实现,用于修改应用程序。这包括渲染器等内部功能,但游戏本身也是作为插件实现的!这使开发人员能够选择他们想要的功能。不需要 UI?不要注册 UiPlugin。想要构建无头服务器?不要注册 RenderPlugin。
这也意味着您可以自由更换任何您不喜欢的组件。如果你觉得有必要,欢迎你建立自己的 UiPlugin,但如果你认为它有用,可以考虑将其贡献给 Bevy!
那些没有贡献给 Bevy 而是单独发布的是第三方插件。这些是有用且易于使用的插件,由其他开发人员创建,可以帮助您避免重新发明轮子。要使用它们,您所要做的就是:
- 查找第三方 Bevy 插件(例如资产页面上的插件)。
- 将其作为板条箱添加到您的板条箱中。Cargo.toml [dependencies]
- 从 crate 导入代码定义 (like ) 以将项添加到工作区。use third_party::prelude::*;
- 将插件添加到您的应用(例如 )。app.add_plugins (third_party_plugin)
但是,大多数开发人员不需要自定义体验,只需要轻松的 “完整引擎” 体验。为此,Bevy 提供了一组 DefaultPlugins。
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.run();
}
cargo run
接下来,自己实现一个插件,并打印 "Hello World!"
use bevy::prelude::*;
//为了更好地组织,让我们将所有“hello”逻辑移动到插件中。要创建一个插件,我们只需要实现插件接口。将以下代码添加到您的文件中:main.rs
pub struct HelloPlugin;
impl Plugin for HelloPlugin {
fn build(&self, app: &mut App) {
app.add_systems(Startup, hello_world);
}
}
fn main() {
App::new()
.add_plugins((DefaultPlugins, HelloPlugin))
.run();
}
fn hello_world() {
println!("HelloWorld!")
}
cargo run