SuperAPI AI 工具集

bevy-ui

前端与建站

查看项目

更新于 10-15 17:34

技能介绍

用途:在 Bevy 0.19 中构建 UI,包括基于 Node 的面板、按钮、标签、覆盖层和菜单,处理交互状态与文本样式。

主要能力:使用 Node、Val 与 flex/grid 布局;用 Button、Interaction::{None, Hovered, Pressed} 处理悬停与按下并切换视觉状态;在 0.19 Parley 迁移后设置文本(FontSource、FontSize、TextLayout);管理指针获取的 InputFocus 与无障碍名称(AccessibleLabel);用 children![] 构建静态树,用 with_children 构建动态树;涉及颜色、边框与圆角、调色板常量。

使用方式:在 App 中注册 DefaultPlugins(0.19 已含 InputFocusPlugin),在 Startup 中生成相机与 UI 节点,在 Update 中根据 Interaction 更新 BackgroundColor。示例中通过 commands.spawn 配合 Node、children![]、Button、AccessibleLabel、Text、TextFont、TextColor 等组件创建按钮,并在系统中用 Query 读取 Interaction 与 BackgroundColor 进行样式切换。

适用场景:游戏内菜单、HUD 面板、按钮与标签、覆盖层,以及需要键盘/辅助技术焦点与无障碍标签的界面。

限制与注意:新插入的组件会满足 Changed<T>,交互系统通常会在首个 Update 访问新按钮,需区分插入与后续变更时用 Ref<T>::is_added();指针悬停与输入焦点不同,不应因光标进出而移动或清除键盘/辅助技术焦点;TextFont.font 为 FontSource,需用 .into() 转换 Handle<Font>,font_size 为 FontSize(如 FontSize::Px(32.0));InputFocus 字段私有,使用 get、set(entity, FocusCause) 与 clear;可见文本子节点会为 Button 推断名称,但视觉文本缺失、装饰性或含义模糊时应使用 AccessibleLabel。相关技能包括 bevy-a11y、bevy-fluent、bevy-cameras、bevy-ecs-queries。