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 在 游戏开发
每月下载 466次
被 2 包 使用
35KB
471 行
Bevy Debug Text Overlay
为bevy游戏引擎添加非常方便的文本叠加宏的实验性概念。
此代码源自我在第一次bevy游戏节期间使用的代码 。主要的改进包括文本不会一直跳动,每条消息都可以有自己的颜色。
screen_print!
非常方便,如果你是一个顽固的 println-debugger,你将喜欢在使用bevy时使用这个crate!
用法
[dependencies]
bevy-debug-text-overlay = "8.1.0"
此bevy插件的使用相当简单。你必须
- 将
OverlayPlugin
添加到您的应用程序中 - 在您想要的地方使用
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:#?}");
}
}
它应该看起来像这样
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
- 从
Options
和OverlayPlugin
中删除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