我需要使用不同的spritefont字体大小,我必须为每个大小创建新的spritefont吗?
答案 0 :(得分:22)
基本上是的。
SpriteBatch.DrawString
{{1}}可让您选择缩放文字。
然而,这方面的主要缺点是,在扩展时,您的文本将变为像素化。如果你以更高的分辨率和缩小比例开始,你会在你变小的时候开始获得人工制品。
因此,如果你有一定数量的尺寸,你应该以你需要的不同尺寸创建多个版本的精灵字体。
如果你想要带有锐边的连续可缩放文本,你可以查看矢量字体。 Nuclex框架有overload。
答案 1 :(得分:3)
您还可以将字体设置为所需的最大尺寸,然后从那里缩小。
答案 2 :(得分:3)
假设您使用的SpriteFont
名为x.spritefont。
执行以下操作为每个尺寸创建新的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;
}