Monogame Android 中的这些边界是从哪里来的?
Posted
技术标签:
【中文标题】Monogame Android 中的这些边界是从哪里来的?【英文标题】:Where did these borders come from in Monogame Android? 【发布时间】:2021-12-28 23:14:23 【问题描述】:即使我使用 GraphicsDevice.ToggleFullScreen() 或 GraphicsDevice.IsFullScreen = true;然后是 this post 中描述的 GraphicsDevice.ApplyChanges(),我似乎仍然在屏幕的两个边缘都有这个边框,在这个屏幕截图中显示为经典的 CornflowerBlue 以进行对比。背景图像锚定在 0,0,宽度和高度设置为屏幕尺寸。据我猜测,“边框”似乎大约为 10 或 20 像素,而不是在顶部或底部,仅在左右边缘。我不明白这是从哪里来的。
【问题讨论】:
你的“屏幕尺寸”基于什么? 你定义了游戏的分辨率吗? @Strom 我从 Window.ClientBounds.Width 和 Height 获得的屏幕尺寸分别为 1080 x 2160。我从(已弃用的)Activity.WindowManager.DefaultDisplay.Width & Height 得到了类似的结果,尽管后者似乎解释了导航栏,而前者没有。顺便说一句,我的设备的文档确认为 1080 x 2160,但显然我想检测它正在运行的任何设备的边界。 @Silver 不,我不相信我已经在任何地方指定了分辨率。我只是想在显示器的范围内操作。你是说像素密度吗?我在哪里可以阅读/了解更多信息? @Silver 好的,您的评论让我以不同的方式思考这个问题。一旦我设置 PreferredBackBufferWidth & Height 以匹配设备边界的尺寸,条/边框就消失了。如果您将您的评论重新发布为答案,我会将其标记为已接受的答案。谢谢。 【参考方案1】:如果您希望您的游戏在每台设备上都全屏显示:
#if android
graphics.IsFullScreen = true;
graphics.PreferredBackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
graphics.PreferredBackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
graphics.SupportedOrientations = DisplayOrientation.Portrait;//if your game does NOT support for anything else but portrait mode
graphics.ApplyChanges();
#endif
但是,在这种情况下,您需要小心,因为设备的比例不同,有些是 16:9,有些是 4:3,等等。如果您需要您的游戏适应所有这些,您更好地调整游戏对象的大小以使其可变或将它们设置为成比例。
【讨论】:
以上是关于Monogame Android 中的这些边界是从哪里来的?的主要内容,如果未能解决你的问题,请参考以下文章
FMOD C# Wrapper 无法找到 fmod.dll(来自 Monogame 3.8)