当尝试打印“Hello, world!”时 使用 Bevy 到屏幕上时,文本不会显示,直到我导入第三方字体文件并将其作为资源加载以用作组件TextStyle值中的字体值Text。在使用该字体之前,我没有明确指定该字体;我刚刚使用了来自 的值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()
});
}
Run Code Online (Sandbox Code Playgroud)
该代码有效。当我将字体值从 更改为 时asset_server.load("FiraSans-Bold.ttf"),Default::default()屏幕上没有显示任何内容。
我正在尝试使用 ReactDOM.createPortal,但 VSCode 中没有突出显示“ReactDOM”或“文档”,当将鼠标悬停在“document.getElementById('overlay-root')”上时,我收到此错误:
Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
Type 'null' is not assignable to type 'Element'.
Run Code Online (Sandbox Code Playgroud)
这是代码:
import styles from './CartModal.module.css';
import ReactDOM from 'react-dom';
import Card from '../UI/Card/Card';
interface CartModalProps {
onClose?: () => void
}
const DisplayCartModal: React.FC<CartModalProps> = (props) => {
return ReactDOM.createPortal(
<>
<CartModal />
</>,
document.getElementById('overlay-root')
)
}
export default DisplayCartModal;
Run Code Online (Sandbox Code Playgroud)
我尝试将文件扩展名切换为 .js 以查看这是否是 TypeScript 错误,事实上,当我更改它(并删除了 TS 特定语法)时,所有内容都突出显示并且运行良好。它没有返回 null,而是返回了正确的 HTML 元素。非常感谢帮助!