使用 Bevy 0.19 的 BSN (Bevy Scene Notation) 声明式构建的游戏主界面示例。
- 主菜单:标题 + "进入游戏" / "配置" / "退出" 三个按钮
- 状态切换:点击按钮在 主菜单 ↔ 游戏中 ↔ 配置 三个页面间流转
- 退出按钮关闭窗口
cargo runbsn_ui/
├── assets/fonts/
│ └── ark-pixel-12px-proportional-zh_cn.ttf # 中方像素字体
├── src/
│ └── main.rs # 主逻辑:状态定义 + 三个页面 + 按钮组件
├── BEVY_UI_GUIDE.md # Bevy 0.19 UI 使用指南
├── Cargo.toml
└── README.md
| 技术 | 说明 |
|---|---|
| Bevy 0.19 | 游戏引擎 |
BSN (bsn!) |
声明式场景构建 |
| Bevy States | OnEnter + DespawnOnExit 页面生命周期 |
| ark-pixel-font | 12px 简体中文像素字体 |
主菜单 ──进入游戏──→ 游戏中
│ │
├──配置──→ 配置 │
│ │ │
↓ ↓ ↓
退出 返回主菜单 ←──┘
// 状态定义
#[derive(States)]
enum GameScreen { MainMenu, Playing, Settings }
// BSN 声明页面
fn settings_screen() -> impl SceneList {
bsn_list![settings_root()]
}
// 状态进入时 spawn,退出时自动 despawn
app.add_systems(OnEnter(GameScreen::Settings), settings_screen.spawn());更多细节见 BEVY_UI_GUIDE.md。