#bevy #debugging #overlay #message #game-engine

bevy-debug-text-overlay

bevy的便捷屏幕消息打印宏

11个版本 (7个主要版本更新)

8.1.0 2024年2月25日
7.0.0 2023年11月4日
6.0.0 2023年7月9日
5.1.0 2023年3月15日
1.0.0 2022年3月16日

#311游戏开发

Download history 54/week @ 2024-04-26 26/week @ 2024-05-03 31/week @ 2024-05-10 105/week @ 2024-05-17 364/week @ 2024-05-24 91/week @ 2024-05-31 50/week @ 2024-06-07 55/week @ 2024-06-14 50/week @ 2024-06-21 84/week @ 2024-06-28 88/week @ 2024-07-05 202/week @ 2024-07-12 99/week @ 2024-07-19 120/week @ 2024-07-26 87/week @ 2024-08-02 150/week @ 2024-08-09

每月下载 466次
2 包 使用

Apache-2.0

35KB
471

Bevy Debug Text Overlay

Bevy tracking Latest version Apache 2.0 Documentation

为bevy游戏引擎添加非常方便的文本叠加宏的实验性概念。

此代码源自我在第一次bevy游戏节期间使用的代码 。主要的改进包括文本不会一直跳动,每条消息都可以有自己的颜色。

screen_print! 非常方便,如果你是一个顽固的 println-debugger,你将喜欢在使用bevy时使用这个crate!

用法

[dependencies]
bevy-debug-text-overlay = "8.1.0"

此bevy插件的使用相当简单。你必须

  1. OverlayPlugin 添加到您的应用程序中
  2. 在您想要的地方使用 screen_print! 宏,就像您使用 println! 一样,无需传递特殊参数。

这将在屏幕的左上角显示文本一段时间。

请参阅 screen_print! 文档以获取详细的使用说明。

代码示例

use bevy::prelude::*;
use bevy_debug_text_overlay::{screen_print, OverlayPlugin};

fn main() {
    App::new()
        // !!!!IMPORTANT!!!! Add the OverlayPlugin here
        .add_plugins((DefaultPlugins, OverlayPlugin { font_size: 23.0, ..default() }))
        .add_systems(Startup, setup)
        .add_systems(Update, screen_print_text)
        .run();
}
fn setup(mut commands: Commands) {
    commands.spawn(Camera2dBundle::default());
}
// Notice how we didn't have to add any special system parameters
fn screen_print_text(time: Res<Time>) {
    let current_time = time.elapsed_seconds_f64();
    let at_interval = |t: f64| current_time % t < time.delta_seconds_f64();
    let x = (13, 3.4, vec![1,2,3,4,5,6,7,8]);
    if at_interval(0.1) {
        let last_fps = 1.0 / time.delta_seconds();
        screen_print!(col: Color::CYAN, "fps: {last_fps:.0}");
        screen_print!("current time: {current_time:.2}")
    }
    if at_interval(2.0) {
        let col = Color::FUCHSIA;
        screen_print!(sec: 0.5, col: col, "every two seconds: {}, {:?}", x.0, x.2)
    }
    if at_interval(5.0) {
        screen_print!(sec: 3.0, "every five seconds: {x:#?}");
    }
}

它应该看起来像这样

https://user-images.githubusercontent.com/26321040/158537677-e9339fd0-3bed-4a83-a4cc-bc1340e5d78b.mp4

Cargo功能

debug

您可以通过禁用 debug cargo功能来用空宏替换 screen_print!。这将禁用所有 bevy-debug-text-overlay 依赖项,因为没有代码要运行。

要完全禁用插件,无需采取进一步行动。为发布版本提供了模拟实现。

要使用此功能,您可以按照以下方式设置 Cargo.toml

# Add a debug feature to your own Cargo.toml, make it default
[features]
debug = ["bevy-debug-text-overlay/debug"]
default = ["debug"]

# Manually specify features for bevy-debug-text-overlay (omitting "debug")
bevy-debug-text-overlay = { version = "8.1.0", default-features = false }

现在,在构建您的发布版本时,您应该使用

cargo build --release --no-default-features

我知道这对某些人来说可能很麻烦,如果这真的与您的工作流程不兼容,请提交一个问题。

已知限制

如果您有任何修复,我欢迎贡献

  • 无法指定与用户定义UI相关的叠加位置,因此调试文本可能会显示在您的UI后面。
  • 存在一个非常定制、非常可疑的资源分配模块。如果有人能给我链接一个好的1D资源分配crate,我将很高兴使用它来代替block
  • 这并不是bevy本身的一部分,所以你需要在你的应用中将其添加为依赖项 :-(
  • 无法将其设置为从底部向上或屏幕右侧显示。

变更日志

  • 2.0.0: 破坏性变更:将bevy版本提升到0.7(你应该能够从1.0.0升级而不更改代码)
  • 3.0.0: 破坏性变更:将bevy版本提升到0.8(你应该能够从2.0.0升级而不更改代码)
  • 4.0.0: 破坏性变更:将bevy版本提升到0.9(你应该能够从3.0.0升级而不更改代码)
  • 4.0.1: 修复README中的"使用"版本
  • 5.0.0: 破坏性变更:将bevy版本提升到0.10(你应该能够从4.0.1升级而不更改代码)
  • 5.1.0: 向screen_print!宏添加push选项,这允许从同一个宏调用中打印多条消息,这使得宏可以在循环中使用,或者在屏幕上重复显示有意义的信息时使用。
  • 6.0.0: 破坏性变更:将bevy版本提升到0.11
    • OptionsOverlayPlugin中删除font字段,我们现在使用bevy默认字体。如果你想使用非默认字体,请自行设置。
  • 7.0.0: 破坏性变更:将bevy版本提升到0.12
  • 8.0.0: 破坏性变更:将bevy版本提升到0.13,移除builtin-font特性。
  • 8.1.0:
    • screen_print! 宏内部使用 $crate::,以便可以通过crate路径调用
    • 在每帧超过4096次打印时不要panic,而是记录一个错误
    • 使用 std 的 OnceLock 而不是 lazy_static!

版本矩阵

bevy 最新支持的版本
0.13 8.1.0
0.12 7.0.0
0.11 6.0.0
0.10 5.1.0
0.9 4.0.1
0.8 3.0.0
0.7 2.0.0
0.6 1.0.0

API稳定性警告

这是一个非常小的crate,因此实际上不可能引起重大的破坏性变化。但是,我并不确信当前的宏API是最优的,它可能在将来发生变化。

许可协议

此库根据Apache 2.0许可协议授权。

依赖关系

~19–58MB
~1M SLoC