繁体   English   中英

如何检测停用后用户何时再次运行WP7 XNA Application?

[英]How to detect when user has run WP7 XNA Application again while deactivated?

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

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

  1. 通过Windows Phone OS中的Tile启动游戏。
  2. 在游戏中,按Windows键离开游戏(导致一个呼叫Game.OnDeactivated但不Game.OnExiting )。
  3. 用户通过Windows Phone OS中的图块再次启动游戏。

我已经在WP7 App Lifecycle上学到了很多东西,但是在用户连续两次运行同一应用程序的情况下,却找不到任何涉及的内容。

我有一些逻辑,只有在游戏关闭时才能调用它,并且不要错过(例如上述情况),这一点也很重要。 我无法在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结束时或在显示另一个菜单之前调用ForceSave (我想这是一种保存方法),您只能在关闭菜单之前保存用户的进度应用。 有时,游戏可能会无故崩溃,因此您必须避免这种情况。
简而言之,您必须修改保存逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM