1个不稳定版本
0.1.0 | 2023年1月30日 |
---|
#1496 在 游戏开发
58KB
1.5K SLoC
Bevy UI Builder
简单的UI构建库,是bevy_ui的简单包装,具有流畅的API设计。
警告
正在积极开发中,无法保证API的稳定性。
功能
- 构建bevy_ui的基本元素:节点、文本、图像、按钮
- 各种按钮,包括
- 切换按钮
- 在鼠标按钮释放时执行点击操作
- 各种绑定
基础
构建UI层次结构
在开始之前,你需要了解bevy_ui 4个基本UI元素
- 节点(NodeBundle)
- 图像(ImageBundle)
- 文本(TextBundle)
- 按钮(ButtonBundle)
UI构建库有相应的函数来构建整个UI
- node()
- image(handle_to_image)
- button()
- text(content)
// before start, add plugin first
.add_plugin(UiBuilderPlugin)
// usage
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
// ...
let mut b = UiBuilder::new(&mut commands, ());
// create new node element
b.node()
// style modifier
.with_style_modifier((StyleSize::FULL, StyleCenterChildren))
.with_children(|b| {
// create image element
b.image(asset_server.load("image/file.png"));
// create button element
b.button()
.with_children(|b| {
// create text element
b.text("text content");
});
});
// ...
}
修改样式
- 使用
Style
组件和.with_style_modifiers(...)
更改Style
组件 - 使用
.with_text_modifier(...)
更改Text
组件 - 使用
.with_visibility(...)
更改Visibility
组件 - 使用
.with_bg_color(...)
更改BackgroundColor
组件
注意:重复调用将覆盖之前的状态
有关更多StyleModifier
和TextModifier
,请参阅src/modifiers.rs
按钮
有一个示例按钮
切换按钮
- 切换按钮:
.with_toggle(false)
- 切换按钮与切换组:
.with_toggle(false).with_toggle_group("group_name")
点击动作
.with_action_on_release()
:在鼠标按钮释放时执行动作.with_mouse_button_mask(...)
:对额外的鼠标右键/中键按钮做出反应,或可以禁用默认的左键鼠标
按钮视觉
每个按钮都有以下视觉状态:
- 正常
- 禁用
- 正常悬停
- 按下
- 按下悬停
库提供以下两种方式
.with_image_button()
:当视觉状态改变时更改 UiImage。.with_color_button()
:当视觉状态改变时更改 BackgroundColor。
如果您需要更多的自定义样式,可以使用 Changed<>
订阅 ButtonVisualState
组件的变化,并处理您的样式。
数据绑定
- S:数据源,组件
- T:修改目标,组件
- 源实体:具有数据源组件
S
- 目标实体:具有目标组件
T
API | 描述 |
---|---|
with_bind_source::<S, T>(源,处理程序) |
当远程实体 source 组件 S 发生变化时,调用处理程序函数以修改当前实体组件 T 。请参阅示例 |
with_on_self_change::<S>(处理程序) |
当当前实体组件 S 发生变化时,调用处理程序函数。请参阅示例 |
with_event_bind_to_target::<E, T>(目标,处理程序) |
当事件 E 发生时,调用处理程序函数以修改实体 target 组件 T 。请参阅示例 |
with_on_source_change::<S>(源,处理程序) |
当远程实体 source 组件 S 发生变化时,调用处理程序函数。请参阅示例 |
with_self_bind::<S, T>(处理程序) |
当当前实体组件 S 发生变化时,调用处理程序函数以修改当前实体组件 T 。请参阅示例 |
with_bind_to_target::<S, T>(目标,处理程序) |
当当前实体组件 S 发生变化时,调用处理程序函数以修改远程实体 target 组件 T 。请参阅示例 |
with_bind_to_multiple_targets::<S, T>(绑定) |
当当前实体组件 S 发生变化时,调用处理程序函数以修改远程实体 target 组件 T |
兼容的 bevy 版本
bevy | bevy_ui_builder |
---|---|
0.9 | 0.1 |
类似项目
此库受到以下库的启发
许可证
MIT OR Apache-2.0
依赖项
~40–54MB
~770K SLoC