pub struct App {
pub world: World,
/* private fields */
}Expand description
AnvilKit 应用框架
基于 Bevy ECS 构建的应用容器,提供系统调度、插件管理和生命周期控制。
§特性
- 插件系统: 支持模块化的功能扩展
- 系统调度: 灵活的系统执行顺序和并行控制
- 资源管理: 全局资源的存储和访问
- 事件系统: 组件间的松耦合通信
§示例
use anvilkit_ecs::prelude::*;
use anvilkit_ecs::schedule::AnvilKitSchedule;
let mut app = App::new();
app.add_plugins(AnvilKitEcsPlugin)
.add_systems(AnvilKitSchedule::Update, movement_system)
.run();
fn movement_system() {
// 系统逻辑
}Fields§
§world: WorldECS 世界,存储所有实体、组件和资源
Implementations§
Source§impl App
impl App
Sourcepub fn add_plugins<P>(&mut self, plugin: P) -> &mut Appwhere
P: Plugin,
pub fn add_plugins<P>(&mut self, plugin: P) -> &mut Appwhere
P: Plugin,
Sourcepub fn add_systems<M>(
&mut self,
schedule: impl ScheduleLabel,
systems: impl IntoSystemConfigs<M>,
) -> &mut App
pub fn add_systems<M>( &mut self, schedule: impl ScheduleLabel, systems: impl IntoSystemConfigs<M>, ) -> &mut App
Sourcepub fn insert_resource<R>(&mut self, resource: R) -> &mut Appwhere
R: Resource,
pub fn insert_resource<R>(&mut self, resource: R) -> &mut Appwhere
R: Resource,
Sourcepub fn init_resource<R>(&mut self) -> &mut App
pub fn init_resource<R>(&mut self) -> &mut App
初始化资源(如果不存在)
§示例
use anvilkit_ecs::prelude::*;
#[derive(Resource, Default)]
struct Score(u32);
let mut app = App::new();
app.init_resource::<Score>();Sourcepub fn run(&mut self)
pub fn run(&mut self)
运行应用的主循环
这将持续运行主调度器,直到应用被标记为退出。
§示例
use anvilkit_ecs::prelude::*;
let mut app = App::new();
app.add_plugins(AnvilKitEcsPlugin)
.run();Sourcepub fn update(&mut self)
pub fn update(&mut self)
执行一次更新循环
运行主调度器一次,处理所有系统。
§示例
use anvilkit_ecs::prelude::*;
let mut app = App::new();
app.add_plugins(AnvilKitEcsPlugin);
// 手动控制更新
for _ in 0..10 {
app.update();
}Sourcepub fn exit(&mut self)
pub fn exit(&mut self)
标记应用应该退出
§示例
use anvilkit_ecs::prelude::*;
fn exit_system(mut app_exit: ResMut<AppExit>) {
app_exit.exit();
}Sourcepub fn should_exit(&self) -> bool
pub fn should_exit(&self) -> bool
检查应用是否应该退出
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for App
impl !RefUnwindSafe for App
impl Send for App
impl Sync for App
impl Unpin for App
impl UnsafeUnpin for App
impl UnwindSafe for App
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates
Self using data from the given World.