我需要使用不同字体的精灵字体,我必须为每种尺寸创建新的精灵字体吗?
基本上是的。
有一个超载的SpriteBatch.DrawString
,给你一个选项来缩放你的文本。
然而,这样做的主要缺点是,当你放大它时,你的文本会变得像素化。如果你从更高的分辨率开始,然后缩小尺寸,当你缩小尺寸时,你会开始得到伪影。
所以如果你有固定数量的大小,你应该根据你需要的不同大小创建多个版本的精灵字体。
如果你想要持续可缩放的文本与锐利的边缘,你可以看看矢量字体。
你也可以把你的字体设置成你需要的最大尺寸,并在此基础上缩小。
假设您正在使用的SpriteFont
命名为x.spritefont。执行以下操作为每个尺寸创建新的SpriteFont
。
- 在解决方案资源管理器中打开x.spritefont文件。
- 进入标签并编辑成你想要的字体大小 要制作多种大小的字体,复制文件并更改相应的标签。重命名文件,最后添加大小为容易记住。
现在创建多个SpriteFont
实例并相应地加载它们。
SpriteFont sf_s10;
SpriteFont sf_s14;
protected override void LoadContent()
{
sf_s10 = Content.Load<SpriteFont>("x_10");
sf_s14 = Content.Load<SpriteFont>("x_14");
//OTHER LOADS
}
动态更改fontSize
,执行以下操作:
SpriteFont current_font;
protected override void Update(GameTime gameTime)
{
if(/*SOME_CONDITION_TO_DECREASE_SIZE*/)
current_font=sf_s10;
if(/*SOME_CONDITION_TO_INCREASE_SIZE*/)
current_font=sf_s14;
}