You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bevy系统无法访问ResMut<Events<Score>>参数,启动崩溃求助

问题分析与解决

错误原因

你遗漏了自定义事件的注册步骤。在Bevy中,任何自定义Event类型都需要通过App::add_event方法注册到应用中,这样Bevy才会创建对应的Events<Score>资源供EventWriter/EventReader访问。你的代码中没有注册Score事件,导致系统尝试获取ResMut<Events<Score>>时找不到该资源,触发panic。

修正后的代码

Cargo.toml(无需修改)

[package]
name = "bevy_playground"
version = "0.1.0"
edition = "2021"

[dependencies]
bevy = "0.15.3"

src/main.rs

use bevy::prelude::*;

fn main() {
    let mut app = App::new()
        .add_plugins(DefaultPlugins)
        .add_event::<Score>() // 新增:注册自定义事件
        .add_systems(Update, dummy)
        .run();
}

#[derive(Event)]
struct Score;

fn dummy(mut events: EventWriter<Score>) {
    // 这里可以正常发送事件,比如:
    // events.send(Score);
}

关键细节说明

  • add_event::<T>()会自动向App中添加Events<T>资源,这是EventWriter<T>和EventReader<T>能够正常工作的前提
  • 所有自定义Event类型都必须完成这一步注册,无论你是只写事件还是读事件

内容的提问来源于stack exchange,提问作者Galedon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:16:15