2015-07-15 2 views
0

Есть ли способ регистрации времени выхода из приложения Unity (т. Е. Вы нажимаете воспроизведение и останавливаете приложение) или, возможно, при выходе из автономной сборки?Unity Время для вычисления длины сеанса

Используя следующую простую строку кода, я могу писать на консоль, когда была нажата кнопка запуска, поэтому я задаюсь вопросом, могу ли я сделать то же самое, когда приложение завершено, так что разница будет равна длине сессия?

Debug.Log("Start Button pressed @ " + DateTime.Now); 

ответ

1

В конце приложения вы можете сохранить свое время сеанса. И в методе «Пуск» вы можете загрузить его с PlayerPrefs, чтобы использовать его.

Like This:

void OnApplicationQuit() 
{ 
    DateTime time = new DateTime(); 
    time.AddSeconds(Time.realtimeSinceStartup); 
    PlayerPrefs.SetString("SessionTime",time.ToBinary().ToString()); 
} 

void Start() 
{ 
    DateTime time = new DateTime(); 
    string timeString = PlayerPrefs.SetString("SessionTime",""); 
    if(timeString != "") 
    { 
     Convert.ToInt64(timeString);  
     time = DateTime.FromBinary(time); 
     Debug.Log("Previous Session Time : " + time.ToString()); 
    } 
} 

Вы также можете достичь этого, используя System.DateTime.Now и хранить его в какой-либо переменной при запуске. и получение времени сеанса в конце путем вычитания сохраненного времени с System.DateTime.Now. Я надеюсь, что он полезный :)

+0

Спасибо, Umair. Это блестяще. Где хранится 'PlayerPrefs.Save()'? Я не могу найти его в пакете проектов ... В руководстве говорится, что он сохраняется на диске, но не может найти его локально ... – Joshua

+0

@Jtech, на какой платформе вы работаете? –

+0

Я использую 64-разрядную Windows 7 – Joshua

1

Вы можете использовать Time.realtimeSinceStartup для получения количества секунд с момента запуска приложения. Кроме того, OnApplicationQuit будет вызываться (на любом MonoBehaviour, который его реализует), когда приложение закрыто. Я не совсем уверен, что он работает в редакторе, но я думаю, что так будет.

void OnApplicationQuit() { 
    Debug.Log(Time.realtimeSinceStartup); 
} 

Надеюсь, что это поможет!

+0

Привет, Андрей. Спасибо за это. Фактически, он работает в режиме редактора, а в автономном режиме я просто пишу информацию в файл. Но знаете ли вы, где «PlayerPrefs.Save()» сохраняется? Я не могу найти его в пакете проектов, а также в таких местах, как 'Application.dataPath' или' Application.persistentDataPath'. В руководстве говорится, что он сохраняется на диске, но не может найти его локально ... Где я должен смотреть? – Joshua