#widgets #bevy-ui #reactive #ui #bevy #color-scheme

nightly bevy_quill_obsidian

基于Bevy和Quill构建的以编辑器为中心的控件集

3个版本

0.1.3 2024年7月31日
0.1.1 2024年7月25日
0.1.0 2024年7月10日

#603 in 游戏开发

Download history 121/week @ 2024-07-08 17/week @ 2024-07-15 144/week @ 2024-07-22 218/week @ 2024-07-29 23/week @ 2024-08-05 20/week @ 2024-08-12

每月406次下载
3 个Crate中(直接使用2个)

MIT/Apache

4MB
10K SLoC

bevy_quill_obsidian

Obsidian 是一个针对Bevy+Quill编写的具有偏见的控件库。这些控件旨在用于构建编辑器,其颜色方案和视觉设计基于此处找到的mocks: https://amytimed.github.io/bevy_editor_mockup/

控件

  • ButtonIconButton
  • 复选框
  • 颜色编辑
  • 对话框
  • 展开切换
  • SliderGradientSlider
  • 旋转
  • 列表视图
  • MenuButtonMenuPopup
  • 滚动视图
  • SwatchSwatchGrid
  • 分隔器
  • ToolPaletteToolButton

钩子

  • create_bistable_transition - 基于计时器的过渡动画,用于具有进入/退出动画的控件。
  • use_element_rect - 返回UI实体的逻辑屏幕边界。
  • is_focusedis_focus_withinis_focus_visibleis_focus_within_visible - 如果元素(或其子元素之一)具有键盘焦点,则返回true的钩子。
  • is_hovered - 如果指针悬停在实体上,则返回true的钩子。

动画

可以插入到UI节点中的动画组件

  • AnimatedBackgroundColor
  • AnimatedBorderColor
  • AnimatedPxWidth
  • AnimatedPxHeight
  • AnimatedScale
  • AnimatedRotation
  • AnimatedTranslation

焦点处理和标签导航

Obsidian使用bevy_a11y Focus资源实现标签导航。

  • TabIndex - 将此插入UI节点,以指示它可以具有键盘焦点。
  • TabGroup - 在UI层次结构的根处插入此控件以启用标签导航。您还可以具有额外的“模态”标签组以允许“标签陷阱”。
  • KeyCharEvent - 当键入字符时,将事件分发给当前焦点元素(使用bevy_eventlistener)。
  • KeyPressEvent - 当按键被按下时,被派发到当前焦点元素(使用 bevy_eventlistener)的事件。
  • DefaultKeyListener - 当没有元素获得焦点时,接收键盘事件的实体。

一般来说,你应该避免在全局快捷键等情况下使用内置的 Bevy 键盘事件。原因是这不允许当前焦点小部件取消按键事件。例如,如果你在文本输入小部件中编辑字符串时按下 backspace,你可能只想删除一个字符,而不是删除你当前选中的任何对象。

键盘事件始终派发到当前焦点元素,并从该元素向上冒泡。如果没有元素获得焦点,则按键事件派发到具有 DefaultKeyListener 组件的第一个实体。

标准样式和颜色

  • colors - 标准编辑器颜色主题。
  • typography - 标准编辑器文本样式(目前使用 OpenSans,已包含在内)。

依赖项

~43–79MB
~1.5M SLoC