试图使用Bevy将“Hello, world!”打印到屏幕上时,文本不会显示,直到我导入了第三方字体文件并将其作为字体值加载到Text组件的TextStyle值中。在使用该字体之前,我没有明确指定字体;我只是使用了Default::default()的值,即WeakHandle<Font>(Id(97059ac6-c9ba-4da9-95b6-bed82c3ce198, 0))。这似乎意味着Bevy默认找到了错误的字体或至少一个无法使用的字体。这更可能是系统提供的字体问题还是Bevy默认字体功能的问题?以下是最小可复现的示例:
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_startup_system(setup)
.run();
}
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.spawn_bundle(UiCameraBundle::default());
commands.spawn_bundle(TextBundle {
text: Text::with_section(
"Hello, world!",
TextStyle {
font_size: 60.0,
color: Color::WHITE,
font: asset_server.load("FiraSans-Bold.ttf")
},
Default::default()
),
..Default::default()
});
}
那段代码是有效的。当我把字体值从 asset_server.load("FiraSans-Bold.ttf")
改为 Default::default()
后,屏幕上就没有显示什么了。
Default::default()
在这里并不会给你一个“默认字体”,而是一个“指向字体类型资产的默认句柄”——尽管该资产实际上是“null”。不确定这有什么用处或者为什么Default
被实现为Handle<T>
(至少似乎只实现了where T: Default
之类的东西) - eggyal