3个不稳定版本
0.2.0 | 2024年7月15日 |
---|---|
0.1.1 | 2024年7月1日 |
0.1.0 | 2024年7月1日 |
#1947 在 游戏开发
每月185次下载
用于 bevy_anyhow_alert
32KB
559 行
bevy_ui_mod_alerts
这是一个简单的实现,通过一个名为 Alert
的组件来表示一个 "toast" UI元素。通过调用 Alert::bundle
构造函数来构建一个 AlertBundle
,或者将返回 Vec<String>
的系统管道到 AlertsPlugin::alert
函数,将生成一个toast UI节点(如果指定了生命周期,最终会消失)。
更多示例请参阅。
lib.rs
:
bevy_ui_mod_alerts
提供了一个类似 "toast" 的警告UI,可以用来通过便捷的UI来帮助管理错误。
可以通过直接使用 AlertBundle
或 Alert::bundle
来生成警告,或者通过将警告消息的 Vec<String>
管道到 AlertsPlugin::alert
系统中来生成警告。
示例
此示例将一些任意系统管道到 AlertsPlugin::alert
系统中
use bevy::prelude::*;
use bevy_ui_mod_alerts::{AlertsPlugin};
fn main() {
let mut app = App::new();
app.add_plugins(MinimalPlugins);
app.add_plugins(AlertsPlugin::new());
app.add_systems(Update, do_stuff_and_maybe_alert.pipe(AlertsPlugin::alert));
// app.run();
}
#[derive(Component)]
struct MyComponent;
fn do_stuff_and_maybe_alert(my_query: Query<&MyComponent>) -> Vec<String> {
vec![]
}
生成的UI可以重新设计样式,但可能不适合每个应用程序。用户可以使用 AlertElements
资源来重新设计警告
use bevy::prelude::*;
use bevy_ui_mod_alerts::{AlertMarker, AlertElements};
let mut app = App::new();
// ...
app.insert_resource(AlertElements::<AlertMarker> {
// root: NodeBundle
// alert: NodeBundle
// header: NodeBundle
// body: NodeBundle
// text: TextStyle
..Default::default()
});
或者从默认样式进行微调
use bevy::prelude::Color;
use bevy::color::palettes;
use bevy_ui_mod_alerts::AlertElements;
let mut elements = AlertElements::new();
elements.header.background_color.0 = Color::Srgba(palettes::css::GREEN);
...但这样做并不太方便。
此外,如果用户想要同时存在多个不同的警告样式,可以将类型参数 M
设置为自定义组件。通常使用默认的 AlertMarker
。
use bevy::prelude::*;
use bevy_ui_mod_alerts::AlertsPlugin;
#[derive(Component, Default, Reflect)]
struct MyAlert;
let mut app = App::new();
app.add_plugins(AlertsPlugin::<MyAlert>::default());
app.add_systems(Update, (|| { vec![] }).pipe(AlertsPlugin::<MyAlert>::custom_alert));
依赖项
~38–74MB
~1.5M SLoC