使用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
相关产品推荐
相关产品推荐

