当我在unity3d中关闭应用程序时,保持计时器运行

时间:2015-04-08 07:49:42

标签: c# android unity3d

我目前正在开发团结游戏,希望有一个每5小时重置一次的计数器,即使我关闭应用程序,我也面临着保持此计时器活动的问题:如果这是我第一次打开计时器为0的应用程序,并一直到达5 hrs。如果我在5 hrs finish之前关闭应用程序,我稍后再回来,我应该会看到自上次关闭应用程序以来compare it again to see if it reached 5 hrs or no

以来经过的时间

我目前正在为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();
  }

1 个答案:

答案 0 :(得分:4)

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

您可以在此处找到关于场景之间以及应用执行之间持久数据的教程:http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/persistence-data-saving-loading

你特别需要的是在游戏关闭时保存current_min和sec值,并在用户下次开始游戏时加载它们。

你也可以考虑不计算秒数,而是存储最后一个“事件”的日期时间值,然后简单地检查当前日期时间是否等于或高于前一个时间+5小时。

请注意,这些方法都不是本身“安全”的,不受用户的阻碍。即,删除游戏的用户数据或更改系统时钟等

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

修改

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

我强烈建议您浏览我最初链接的整个教程,因为它会向您展示处理这些事情的正确方法。

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