我正在创建一个XAML Monogame,我想在SwapChainBackgroundPanel
中设置固定的播放区域。
我的意思是,想象:游戏画面(例如1920x1080)和游戏区域(例如1280x800)只是其中的一部分,其他空间用于差异信息,如得分,等级,经验等。,也有不同的按钮,如下图所示:
答案 0 :(得分:0)
您可以为精灵批处理设置多个渲染目标。我会将您的整个游戏逻辑或区域绘制为或返回所需大小的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.Begin()和spriteBatch.End()之间的下一个spriteBatch.Draw调用中绘制。