Monogame XAML Reset CoreWindow?

本文关键字:CoreWindow Reset XAML Monogame | 更新日期: 2023-09-27 18:34:13

Heey,

我遇到了一个问题。我正在完成完成游戏所需的所有最后测试,但现在我遇到了一个问题。每当我在纵向保持游戏的同时初始化游戏时,游戏都会切换到横向,但Window.Current.CoreWindow不会更新。因此,Xaml 模板基于纵向设置而不是横向设置创建一个窗口。如何在初始化整个游戏之前更改或更新 CoreWindow?

经过一些研究,我尝试使用游戏ARMED!重现它,我知道它使用Xaml模板,即使在那里我发现了这个问题,当我纵向打开它时,窗口在移回横向时不会更新,因此被卡在破碎的界面/游戏中。

提前谢谢。

Monogame XAML Reset CoreWindow?

CoreWindow 不会自行刷新。它只会在你 Update() 中刷新。因此,如果您想在点击初始化部分之前处理对 CoreWindow 的更改,则需要自己处理它们。

_coreWindow = Window.Current.CoreWindow;
// Create the game.
_game = XamlGame<Main>.Create("", _coreWindow, this);
_coreWindow.Activate();
_coreWindow.Dispatcher.ProcessEvents(CoreProcessEventsOption.ProcessAllIfPresent);

在这里,您可以看到我通过当前的CoreWindow创建了我的游戏。在我的游戏的构造函数完成后,我手动检查和处理 CoreWindow 的任何更改,这些更改可能同时发生(主要是方向更改)并处理它们,以便在我的游戏初始化时它将以适当的完整横向分辨率运行。

它可能不是最干净的解决方案,但就我而言,它可以完成工作。