Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在unity3d中关闭应用程序时保持计时器运行_C#_Android_Unity3d - Fatal编程技术网

C# 在unity3d中关闭应用程序时保持计时器运行

C# 在unity3d中关闭应用程序时保持计时器运行,c#,android,unity3d,C#,Android,Unity3d,我目前正在开发一款unity游戏,希望有一个计数器每5小时重置一次,我面临着一个问题,即即使在我关闭应用程序时,也要保持此计时器处于活动状态。例如:如果这是我第一次打开应用程序,则计时器为0,并一直运行到5小时。如果我在5小时结束之前关闭应用程序,然后回来,我将看到自上次关闭应用程序以来经过的时间量,并再次比较,查看是否达到5小时 我目前正在为unity android开发此应用程序 到目前为止我所做的: public static int Sec=PlayerPrefs.GetInt("S

我目前正在开发一款unity游戏,希望有一个计数器每5小时重置一次,我面临着一个问题,即即使在我关闭应用程序时,也要保持此计时器处于活动状态。例如:如果这是我第一次打开应用程序,则计时器为
0
,并一直运行到
5小时
。如果我在
5小时结束之前关闭应用程序
,然后回来,我将看到自上次关闭应用程序以来经过的时间量,并
再次比较,查看是否达到5小时

我目前正在为unity android开发此应用程序

到目前为止我所做的:

  public static int Sec=PlayerPrefs.GetInt("Sec",0);
  public static int Current_Min=PlayerPrefs.GetInt("CurrentMin",0);
  public static int Max_min = PlayerPrefs.GetInt("MaxMin",5*60);

  void Start()
  {
       InvokeRepeating("GetDate",0,1f);
  }

  void GetDate()
  {
        Sec++;
        if (Sec == 60){
            Sec = 0;
            Current_Min++;
       }
       if(Current_Min==Max_min)
       {
          // do something ....
       }
  }
  void OnApplicationQuit()
  {
     PlayerPrefs.SetInt("Sec",Sec);
     PlayerPrefs.SetInt("CurrentMin",Current_Min);
     PlayerPrefs.SetInt("MaxMin",Max_min);
     PlayerPrefs.Save();
  }

您需要的是一种在用户的播放会话之间持久保存一段信息的方法。 数据持久性是在整个游戏开发过程中使用的一个更广泛的概念。 例如,保存游戏、高分、用户偏好设置等

您可以在此处找到关于在场景之间以及在应用程序执行之间分配数据的教程:

您特别需要的是在游戏结束时保存当前的_min和sec值,并在用户下次启动游戏时将其加载回

您也可以考虑不计数秒,而是存储最后一个“事件”的日期时间值,然后简单地检查当前日期时间是否等于或高于上一次+ 5小时。 请注意,这两种方法都不是天生“安全”的,不会受到用户的阻碍。例如,删除游戏的用户数据或更改系统时钟等

因此,不要将这种方法用于敏感的事情,例如多人游戏中的试用限制或Acton。为此,您需要不依赖存储在用户设备上的信息的外部验证/授权

编辑

您已经编辑了原始问题,并在关闭时插入了将数据保存到播放器首选项的部分。 您仍然缺少在调用调用计时器之前在启动时加载ti的部分

我强烈建议您阅读我最初链接的整个教程,因为它将向您展示处理这类事情的正确方法


您没有解释使用“计时器”的目的,但我怀疑它应该是您需要为用户实现的更大游戏保存/加载过程的一部分。简单地破解这一功能是微不足道的,但你应该设置你的游戏,以便你能够优雅地处理在应用程序执行之间恢复游戏的问题,为此你需要进行更多的研究。

你想要的是一种在用户的游戏会话之间保存一条信息的方法。 数据持久性是在整个游戏开发过程中使用的一个更广泛的概念。 例如,保存游戏、高分、用户偏好设置等

您可以在此处找到关于在场景之间以及在应用程序执行之间分配数据的教程:

您特别需要的是在游戏结束时保存当前的_min和sec值,并在用户下次启动游戏时将其加载回

您也可以考虑不计数秒,而是存储最后一个“事件”的日期时间值,然后简单地检查当前日期时间是否等于或高于上一次+ 5小时。 请注意,这两种方法都不是天生“安全”的,不会受到用户的阻碍。例如,删除游戏的用户数据或更改系统时钟等

因此,不要将这种方法用于敏感的事情,例如多人游戏中的试用限制或Acton。为此,您需要不依赖存储在用户设备上的信息的外部验证/授权

编辑

您已经编辑了原始问题,并在关闭时插入了将数据保存到播放器首选项的部分。 您仍然缺少在调用调用计时器之前在启动时加载ti的部分

我强烈建议您阅读我最初链接的整个教程,因为它将向您展示处理这类事情的正确方法


您没有解释使用“计时器”的目的,但我怀疑它应该是您需要为用户实现的更大游戏保存/加载过程的一部分。简单地破解这一功能是微不足道的,但是你应该设置你的游戏,使你能够优雅地处理在应用程序执行之间恢复游戏,为此你需要进行更多的研究。

你不能得到一个
日期时间。现在关闭时
和一个计时器值,然后重新启动时,通过比较保存的值和当前值来计算经过的时间?我不明白,你能提供一个例子吗?我对Unity不是很在行,我当时没有访问它的权限,但你肯定有一些事件,称为OnClosing或类似的事件-当你的应用程序即将关闭时引发的事件。您还有一个在应用程序启动时引发的事件—这可能称为OnStart。当触发OnClose时,您需要节省关闭时间和计时器值。下次启动应用程序时,只需将关闭时间和启动时间之间的差值添加到计时器中。您可以检查我的编辑吗?是否可以获得
日期时间。现在
关闭时和计时器值,然后重新启动时,通过比较保存的值和当前值来计算经过的时间?我不明白,你能提供一个例子吗?我对Unity不是很在行,我当时没有访问它的权限,但你肯定有一些事件,称为OnClosing或类似的事件-当你的应用程序即将关闭时引发的事件。您还有一个在应用程序启动时引发的事件—这可能称为OnStart。当触发OnClose时,您需要节省关闭时间和计时器值。当应用程序下次启动时,只需将关闭时间和启动时间之间的差异添加到计时器中即可。请检查我的编辑。如果我想使用时间而不是称为秒的变量,请更新我的答案以反映您在问题中对代码所做的更改。H