gpt4 book ai didi

c# - 如何重启 XNA 游戏类(Monogame)

转载 作者:太空狗 更新时间:2023-10-29 19:47:56 25 4
gpt4 key购买 nike

我正在使用 xna 的 Monogame 实现在 Windows 商店中开发一个简单的空气曲棍球游戏,如果任何玩家获得 7 分,我将导航到某个 XAML 页面

这是我在更新方法中使用的逻辑

 protected override void Update(GameTime gameTime)
{
DrawGame();
if (player1.Score == 7)
{
try
{
PlayerOneScore = player1.Score;
PlayerTwoScore = player2.Score;
App.WinningFlag = true;
App.WinningPlayer = PlayerOneName;
this.Exit();
if (BaseCount == 0)
{
//Navigation to next page
BaseCount++;
Frame ff = new Frame();
ff.Navigate(typeof(NextPage));
Windows.UI.Xaml.Window.Current.Content = ff;
Windows.UI.Xaml.Window.Current.Activate();
}
}
catch (Exception)
{
throw;
}
}
base.Update(gameTime);
}

但是我看到 Update 和 Draw 方法仍然被调用,为什么这样?虽然我已经编写了离开此页面的代码,但在 NextPage 中还有一个编码为重新启动游戏的按钮

NextPage中按钮重启游戏的点击事件

private void btnStartNewGame_Click(object sender, RoutedEventArgs e)
{
var app = App.Current as App;
if (app.GamePage != null)
{ app.GamePage = null; app.GamePage = new GamePage(string.Empty); }
else { app.GamePage = new GamePage(string.Empty); }
Window.Current.Content = app.GamePage;
}

这使我呈现黑屏,没有绘制 game1.cs 类中的纹理。

如何从 Game1.cs 导航到 Xaml 并重新调用 Game1.cs?

最佳答案

我找到了问题的解决方案。虽然我不知道这是正确/理想的方式,但它至少对我有用。

我正在编写的导航回游戏的代码是错误的

陈旧错误

 private void btnStartNewGame_Click(object sender, RoutedEventArgs e)
{
var app = App.Current as App;
if (app.GamePage != null)
{ app.GamePage = null; app.GamePage = new GamePage(string.Empty); }
else { app.GamePage = new GamePage(string.Empty); }
Window.Current.Content = app.GamePage;
}

您不必每次都创建一个 GamePage 实例来访问它,而是创建一次并在 App 对象中保存对它的引用。我也附上修改后的版本:

修改

        private void btnStartNewGame_Click(object sender, RoutedEventArgs e)
{
var app = App.Current as App;
if (app.GamePage != null)
Window.Current.Content = app.GamePage;
}

还有一个link

这对我有帮助,希望对你也有帮助:)

关于c# - 如何重启 XNA 游戏类(Monogame),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21430308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com