小结与练习
小结
本章覆盖了 Bevy UI 的交互层:
- Interaction 枚举:最简单的交互方式,
Button标记 +Interaction::Pressed / Hovered / None,零插件; - bevy_ui_widgets:实验性 headless 控件库。
Button用Activate事件,Slider用ValueChange<f32>,Checkbox用ValueChange<bool>。控件不自动管理状态(或通过*_self_updateobserver 启用自动管理),样式全靠你自己; - 滚动:
Overflow::scroll_y()+ScrollPosition,无需额外插件; - 焦点:
InputDispatchPlugin+TabNavigationPlugin提供键盘导航和焦点管理; - UI 材质:
UiMaterialtrait +MaterialNode组件,用自定义 shader 绘制 UI 背景; - 工程模式:控件函数返回
impl Bundle,样式系统用Changed过滤器,数据流单向(事件 → 响应 → 更新)。
练习
按钮计数器:用
Interaction路线做一个按钮,每次按下时计数器加一,文本显示当前计数。滑条联动:两个滑条(X 和 Y),拖动任一滑条时在面板上显示当前坐标值。提示:用两个
SliderValue+ 一个显示坐标的Text。可滚动设置面板:把 Listing 29-7 的设置面板放进一个
Overflow::scroll_y()容器里,添加足够多的选项让它需要滚动。再加一个Scrollbar控件。禁用状态:给按钮添加
InteractionDisabled组件(来自bevy::ui),观察它如何影响交互。用按键 D 切换禁用/启用。自定义滑条样式:给 Listing 29-3 的滑条添加悬停效果——鼠标悬停在滑块上时,滑块变亮。提示:查询
Hovered组件。