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)

MonoGame (Windows/Ubuntu) 中的跨平台文本框输入

iOS 8 和 Monogame 的方向错误?

Android 谷歌地图获得扩展的边界坐标

在散点图上绘制隐式函数(逻辑回归中的决策边界)

视频超出了 Android 中 VideoView 的边界