如何检测用户在停用时再次运行WP7 XNA应用程序



我有一个用C#中的XNA 4.0编写的Windows Phone 7游戏。

如果用户执行以下操作,似乎可以避免Game.OnExit方法:

  1. 在Windows Phone操作系统中通过Tile启动游戏
  2. 在游戏过程中,按下WINDOWS按钮退出游戏(导致调用game.OnActivated,而不是game.OnExiting)
  3. 用户通过Windows Phone操作系统中的Tile再次启动游戏

我读了很多关于WP7应用程序生命周期的文章,但没有发现任何涉及用户连续两次运行同一应用程序的情况。

我有一些逻辑,只有在游戏关闭时才有意义被调用,而且重要的是不要错过(比如上面的情况)。我不能在OnDeactivated中调用它,因为它会导致较差的用户体验。

以下是有问题的代码(在我的Game类实现中找到):

protected override void OnExiting(object sender, EventArgs args)
{
    // This is what is getting missed!
    ForceSave();
    base.OnExiting(sender, args);
}
protected override void OnDeactivated(object sender, EventArgs args)
{
    base.OnDeactivated(sender, args);
    // I don't want to put ForceSave here because it will get called even if the user is not exiting the game.
    ...
}
protected override void OnActivated(object sender, EventArgs args)
{
    base.OnActivated(sender, args);
    ...
}

我认为你无法处理这种情况
我不知道你的游戏是关于什么的,但最简单的解决方案是在关卡结束或显示另一个菜单之前调用ForceSave(我想这是一种保存方法),你不能只在关闭应用程序之前保存用户的进度。有时游戏可能会无故崩溃,你必须防止这种情况发生
简而言之,您必须修改您的保存逻辑。

最新更新