Bevy文本不显示,我不知道原因。

3

大家好,我试图将分数写在窗口左上角,但由于某种原因它没有工作。这是我用来生成文本的代码:

commands
.spawn(TextBundle{
    text: Text{value: "Score:".to_string(),
    font: assets.load("FiraSans-Bold.ttf"),
    style:TextStyle{
        font_size:30.0,
        color:Color::WHITE,
        ..Default::default()},..Default::default()},
    transform: Transform::from_translation(Vec3::new(-380.0,-380.0,2.0)),
    ..Default::default()
})
.with(TextTag);
窗口大小为800 x 800,需要帮忙请告诉我。

1
你看过在bevy仓库中的UI示例了吗?它似乎有一个样式中的位置变量,你可以使用它来定位UI元素,而不是使用transform。根据你的代码,它还需要一个UI相机,但是可能没有。 - eric556
2个回答

2

另一个原因(在bevy 0.8中)可能是bevy中没有默认字体(请查看这个答案

你需要做的是下载一个.ttf文件,然后在生成文本时加载它。

TextStyle {
    font_size: 50.0,
    color: Color::WHITE,
    font: asset_server.load("your_font.ttf"),
},

之前的回答链接有帮助,但是理解起来并不容易,问题是使用Default::default()作为字体,而不是省略它并使用..default() - undefined

2
如果您还没有添加CameraUiBundle,则可能需要添加它。
commands
    .spawn(CameraUiBundle::default())
    .spawn(TextBundle{
        ...
    })
    .with(TextTag);

您可能希望在初始设置系统中完成此操作,同时添加摄像头。

回答时使用的Bevy版本为0.4。


不错。我没有意识到摄像机是独立于主摄像机的。现在我想知道如何将文本显示为场景的一部分? - Squirrel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接