好吧,我一直试图根据右下角设置一个spritefont的位置,然而,当我设置它时它会关闭,我将它设置为10,10我甚至不会看到它,如果我将它设置为40,40我刚开始能够看到右下角...我想我做得对...这是我的代码:
public void DrawFont(SpriteBatch spriteBatch)
{
spriteBatch.DrawString(gameFont, fontText, fontPos, fontColor);
}
fontPos是左上角。这是在自己的班级。然后我有另一种方法(在同一个类中):
public void setBottomRight(Vector2 newVector2)
{
fontPos.X = newVector2.X - gameFont.MeasureString(fontText).X;
fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y;
}
我在Game.cs类的更新方法中使用它,并将向量设置为10,10的新向量但是我无法看到文本,我查看它是否只是一个空白我的文字,但事实并非如此。
我觉得这是对的......或者我犯了一个愚蠢的错误......?或者MeaureString方法是否只提供从边到边的长度?
谢谢!
答案 0 :(得分:1)
你的原始逻辑几乎是合理的。唯一不正确的是Measurestring Y值。 measuretring的Y值返回字符串垂直大小的两倍。因此,如果您将大小为14作为字符串,它将返回28.意味着不会给你高度,它会给你加倍,抛出你的屏幕串。 取代
fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y;
与
fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y/2;
将解决您的问题!