#bevy-ui #widgets #ui #bevy #event-system

bevy_aoui_widgets

bevy_aoui的UI、事件和DSL

3个不稳定版本

0.2.1 2023年12月1日
0.2.0 2023年11月30日
0.1.0 2023年11月19日

#1968 in 游戏开发

MIT/Apache

635KB
5K SLoC

Bevy AoUI Widgets

Crates.io Docs

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是我们自己的IntoDslInto,其中所有的语法魔法都发生。

像这样添加子项,注意您不需要手动传递上下文(命令, ..)

sprite! ((commands, ..) {
    dim: [400, 400],
    sprite: assets.load("Ferris.png"),
    child: textbox! {
        ...
    }
});

查看我们的书籍或示例以获取更多信息。

依赖项

~51–88MB
~1.5M SLoC