public void Hud()
на самом деле является конструктором вашего класса, он не должен отвечать за рисование (особенно если вы рисуете один и тот же класс много раз, а цель конструктора состоит в том, чтобы ... создать класс)
Итак, первый шаг - удалить это:
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null);
spriteBatch.Draw(tempHUD, viewportRect, Color.White);
string output = "Health:";
string output2 = "Magic:";
Vector2 FontOrigin = HUD.MeasureString(output) / 2;
spriteBatch.DrawString(HUD, output, FontPos, Color.Red, 0, FontOrigin, 1.0f, SpriteEffects.None, 0.5f);
spriteBatch.DrawString(HUD, output2, FontPos2, Color.Blue, 0, FontOrigin, 1.0f, SpriteEffects.None, 0.5f);
spriteBatch.End();
из конструктора и добавить его в новый метод класса, такой как Draw ().
UPDATE:
XNA предоставляет класс Game, который, по-видимому, является основным классом приложения.Он должен содержать ссылку на объект вашего класса.
spritebatch
также является членом класса Game, поэтому его следует передать в функцию Draw вашего HUD в качестве параметра.Затем все, что вам нужно сделать, это вызвать метод Draw HUD (объекта HUD, который доступен из объекта Game) из метода Draw игры.