You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rust与Bevy 0.10.1渲染文本无显示问题求助

解决Bevy 0.10.1中无法渲染文本的问题

你遇到的问题核心在于使用了3D相机来渲染2D文本元素。Bevy里的TextBundle属于2D渲染体系,默认的Camera3dBundle是为3D场景设计的,无法捕捉到2D文本的渲染层。

修复方案如下:

  • 替换Camera3dBundle为Camera2dBundle,这是Bevy专门用于2D内容(包括文本)的相机组件
  • 可选但建议:显式指定字体(DefaultPlugins已包含默认字体,显式设置能避免潜在加载问题),同时通过Style组件设置文本对齐,确保文本显示在窗口可见区域

修正后的完整代码:

use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_startup_system(write_text)
        .run();
}

fn write_text(mut commands: Commands, asset_server: Res<AssetServer>) {
    // 使用2D相机替代3D相机
    commands.spawn(Camera2dBundle::default());

    commands.spawn(TextBundle {
        text: Text::from_section(
            "Foo",
            TextStyle {
                color: Color::WHITE,
                // 显式指定内置默认字体
                font: asset_server.load("fonts/FiraSans-Bold.ttf"),
                font_size: 40.0,
                ..default()
            },
        ),
        // 设置文本在窗口居中
        style: Style {
            position_type: PositionType::Absolute,
            top: Val::Percent(50.0),
            left: Val::Percent(50.0),
            transform: Transform::from_xyz(-50.0, -20.0, 0.0),
            ..default()
        },
        ..default()
    });
}

额外说明:

  • 若不想用绝对定位,也可以直接调整Transform的translation来移动文本,2D场景下Vec3的Z值仅影响元素层级,不影响基础显示
  • 如果你没有对应字体文件,DefaultPlugins会自动调用内置字体,也可以替换为你自己的字体路径

内容的提问来源于stack exchange,提问作者juju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:22:14