3个不稳定版本
0.2.1 | 2023年12月1日 |
---|---|
0.2.0 | 2023年11月30日 |
0.1.0 | 2023年11月19日 |
#1968 in 游戏开发
635KB
5K SLoC
Bevy AoUI Widgets
bevy_aoui的UI、事件和DSL。
此Crate没有稳定的API,可能会发生变化。
事件系统
由于AoUI可能位于bevy应用之上,我们为AoUI小部件提供专用的光标活动检测事件系统。未被我们系统捕获的鼠标事件可以由其他系统处理。
我们为库开发人员提供基于组件插入的核心事件系统,同时也为最终用户提供基于一次性事件处理器系统。
小部件
我们目前提供了一些简单的小部件。
Shape
:使用bevy_prototype_lyon
的矢量形状渲染器。InputBox
:单行文本输入。Button
:提供点击检测和传播的小部件。
DSL
我们提供了一个DSL来简化小部件构建。
开始之前,请始终导入预览以保持语法一致性。
use bevy_aoui_widgets::dsl::prelude::*;
每个"小部件"都有一个结构和相应的宏。
sprite! ((commands, ..) {
dim: [400, 400],
sprite: assets.load("Ferris.png"),
});
这可以转换为
Sprite {
dim: [400, 400].dinto(),
sprite: assets.load("Ferris.png").dinto(),
..Default::default(),
}.spawn_with(&mut commands);
其中dinto
是我们自己的Into
,DslInto
,其中所有的语法魔法都发生。
像这样添加子项,注意您不需要手动传递上下文(命令, ..)
sprite! ((commands, ..) {
dim: [400, 400],
sprite: assets.load("Ferris.png"),
child: textbox! {
...
}
});
查看我们的书籍或示例以获取更多信息。
依赖项
~51–88MB
~1.5M SLoC