Създавам XAML Monogame и искам да задам фиксирана зона за игра в SwapChainBackgroundPanel
. Имам предвид, представете си: екранът на играта (напр. 1920x1080) и зоната на играта (напр. 1280x800) са само част от това, а другото пространство е за различна информация в мрежата като резултат, ниво, опит и т.н., също различни бутони, като на тази снимка:
Как мога да задам фиксирана зона за игра в xaml моноигра?
Отговори (1)
Можете да зададете няколко цели за изобразяване, към които да рисувате за вашата партида спрайтове. Бих направил цялата ви игрова логика или област да бъде изчертана като или да върна Texture2D в желания размер. След това във вашия Game1.cs или където и да било, позиционирате тази текстура съответно в допълнение към UI елементите, които рисувате.
public override Texture2D Draw(SpriteBatch spriteBatch)
{
spriteBatch.GraphicsDevice.SetRenderTarget(gameRenderTarget);
spriteBatch.Begin(SpriteSortMode.FrontToBack, null);
sky.Draw(spriteBatch);
ground.Draw(spriteBatch);
background.Draw(spriteBatch);
player.Draw(spriteBatch);
spriteBatch.End();
return (Texture2D)finalRenderTarget;
}
Сега цялата тази зона за игра е текстура, която трябва да се манипулира точно както всичко останало във вашата игра! Вашата основна игра може да дефинира предварително оформлението на играта и вие просто изобразявате всяка област според нуждите.
Другата опция е едно извикване на Draw, при което настройвате множество цели за изобразяване и просто предавате предишната цел за изобразяване, която да бъде изчертана в следващото извикване на spriteBatch.Draw между spriteBatch.Begin() и spriteBatch.End().