簡體   English   中英

當我在unity3d中關閉應用程序時保持計時器運行

[英]Keep a timer running when i close the application in unity3d

我目前正在開發一個統一游戲,希望每5小時重置一次計數器,例如,即使我關閉應用程序,我也面臨着保持此計時器處於活動狀態的問題:如果這是我第一次打開應用程序,則計時器為0 ,直到5 hrs為止。 如果我在5 hrs finish前關閉了應用程序,而我稍后又回來了,那么我應該看到自上次關閉應用程序以來經過的時間,並compare it again to see if it reached 5 hrs or no

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

您需要的是一種在用戶的播放會話之間保留一條信息的方法。 數據持久性是在游戲開發中廣泛使用的概念。 即,保存游戲,高分,用戶首選項設置等。

您可以在此處找到有關在場景之間以及應用程序執行之間保持數據的教程: http ://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/persistence-data-saving-loading

您特別需要的是在游戲關閉時保存current_min和sec值,並在用戶下次啟動游戲時將其重新加載。

您還可以考慮不計算秒數,而是存儲上一個“事件”的日期時間值,然后簡單地檢查當前日期時間是否等於或大於前一個時間+ 5小時。

注意,這些方法都不是固有地不受用戶阻礙的“安全”方法。 即刪除游戲的用戶數據或更改系統時鍾等。

因此,請勿將這種方法用於敏感的事物,例如試玩限制或多人游戲中的acton。 為此,您需要不依賴用戶設備上存儲的信息的外部驗證/授權

編輯

您已經編輯了原始問題,並在關閉時插入了將數據保存到玩家首選項的部分。 您仍然缺少在調用調用計時器之前在啟動時加載ti的部分。

我強烈建議您閱讀我最初鏈接的整個教程,因為它將向您顯示處理此類問題的正確方法。

您沒有解釋“計時器”的用途,但我懷疑它應該是您需要為用戶實施的較大游戲保存/加載過程的一部分。 簡單地破解這一功能是微不足道的,但是您應該對游戲進行設置,以使其能夠優雅地處理應用執行之間的恢復游戲玩法,因此您需要進行更多研究。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM