我在C#中使用XNA 4.0编写了一个Windows Phone 7游戏。
如果用户执行以下操作,似乎可以避免使用Game.OnExiting方法:
我已经阅读了很多关于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);
...
}
答案 0 :(得分:0)
我认为你不能处理这种情况
我不知道你的游戏是什么,但最简单的解决方案是在关卡结束时或在显示另一个菜单之前调用ForceSave
(我认为这是一种保存方法),你无法保存用户的进度仅在关闭申请之前。有时游戏可能会毫无理由地崩溃,你必须防止这种情况发生
简而言之,您必须修改保存逻辑。