2016-08-24 2 views
0

Мне нужно измерить время между 2 раз в секундах. Мне нужно, что для кликер игры, чтобы сделать, как:Измерение разницы между 2 раза в секундах

money += timepassed * moneypersecond 

И, конечно, мне нужно, чтобы сэкономить время А на Quit и измерения времени B на старте, а затем разницу между ними. Я пытался сделать это самостоятельно, но каждый раз, когда я запускал приложение по телефону, я получал как 12000000 денег.

Любые советы?

Так что этот сберегательный код работает отлично.

using UnityEngine; 
using System.Collections; 
using System.IO; 
using System; 

public class BackGroundSaving : MonoBehaviour 
{  
    public Data data; 
    System.Diagnostics.Stopwatch czasomierz = new System.Diagnostics.Stopwatch(); 
    public Data2 data2 = new Data2(); 

    void Start() 
    { 
     try 
     {   
      Load(); 
     } 
     catch (Exception) 
     { 

     } 
     czasomierz.Start();  
    } 

    public void Save() 
    { 
     data2.wspolczynnik_zarabiania_pieniedzy_na_sekunde_TradeMark = data.wspolczynnik_zarabiania_pieniedzy_na_sekunde_TradeMark; 
     data2.wspolczynnik_zarabiania_pieniedzy_na_klikniecie_TradeMark = data.wspolczynnik_zarabiania_pieniedzy_na_klikniecie_TradeMark; 
     data2.LastRun = data.LastRun; 
     data2.money = data.money; 
     Saver.SaveData(data2, "save.bin"); 
    } 

    public void Load() 
    { 
     Saver.LoadData(ref data2, "save.bin"); 
     data.wspolczynnik_zarabiania_pieniedzy_na_sekunde_TradeMark = data2.wspolczynnik_zarabiania_pieniedzy_na_sekunde_TradeMark; 
     data.wspolczynnik_zarabiania_pieniedzy_na_klikniecie_TradeMark = data2.wspolczynnik_zarabiania_pieniedzy_na_klikniecie_TradeMark; 
     data.LastRun = data2.LastRun; 
     data.money = data2.money;  
    } 

    void OnApplicationFocus(bool pauseStatus) 
    { 
     if (pauseStatus) 
     { 

     } 
    } 

    public void Update() 
    { 
     if (czasomierz.ElapsedMilliseconds >= 10000) 
     { 
      Save(); 
      czasomierz.Stop(); 
      czasomierz.Reset(); 
      czasomierz.Start(); 
     } 

     if (Input.GetKey(KeyCode.Escape)) 
     {  
      Save(); 
      Application.Quit(); 
     } 
    } 
} 
+0

Ваш код не заполнен. – Aybe

+0

Пожалуйста, предоставьте [mcve]. – DavidG

+0

Еще один совет: избегайте пустых блоков 'catch'. Вы едите исключения и никогда не узнаете, происходит ли вызов функции Load() '. –

ответ

0

Самый простой кусок кода, чтобы время, проведенное на последней сессии и установить время, затраченное на текущей сессии будет:

using UnityEngine; 

internal class Class1 : MonoBehaviour 
{ 
    public void Start() 
    { 
     var timeSpent = GetTimeSpent(); 
    } 

    public void OnApplicationQuit() 
    { 
     SetTimeSpent(Time.realtimeSinceStartup); 
    } 

    private static float GetTimeSpent() 
    { 
     return PlayerPrefs.GetFloat("TimeSpent"); 
    } 

    private static void SetTimeSpent(float timeSpent) 
    { 
     PlayerPrefs.SetFloat("TimeSpent", timeSpent); 
     PlayerPrefs.Save(); 
    } 
} 

Теперь настроить это к вашим потребностям.

Смежные вопросы