如何让 DrawString() 在绘图时考虑当前视口,就像 Draw() 一样?

How do I make DrawString() take the current viewport into account when drawing, like Draw() does?

目前,当我绘制它们的视口改变大小或位置时,我所有的纹理都被缩放并移动到正确的位置(我不需要自己做任何计算来做到这一点)。

但是,当我使用 DrawString()(仍然在同一个视口中)并且视口改变大小或位置时,文本没有遵循我能理解的逻辑。它按预期缩放,但移动方式非常奇怪。

这是

(为了让主要玩家的名字在缩小时正确移动,我想出了这个糟糕的 "formula": X -= Viewport.X / 2.15f.Y -= Viewport.X / 3.2f)

现在,在使用视口进行缩放时,有什么方法可以使 DrawString() 像 Draw() 一样工作吗?

我现在的设置方式是:

_spriteBatch.GraphicsDevice.Viewport = ScreenGame.Viewport;
// Draw tile sprites
// Draw player sprites
// Draw text

如果我忘记提及相关内容,请提前致歉。

DrawString()试试

x /= Scale.X;
y /= Scale.Y;

这当然是伪代码。我想如果你能找到新的比例并将其存储在 struct 或其他东西中,你可以这样做以正确缩放文本的位置。