@keksmr
Unity разработчик

Unity вычисление времени отсутствия?

private void OnApplicationQuit()
    {
        Save();
    }
    public void Save()
	{
        PlayerPrefs.SetString("Last", DateTime.Now.ToString());
}


а потом расчет
TimeSpan ts = DateTime.Now - DateTime.Parse(PlayerPrefs.GetString("Last"));
            float time = ts.Hours * 3600 + ts.Minutes * 60 + ts.Seconds;
            TheTime -= time;

почему высчитывает правильно только если прошло больше минуты
  • Вопрос задан
  • 1412 просмотров
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
float time смотрели именно? или сразу TheTime ??
(хотя локальный формат сохранения времени, наверное не учитывает секунды. в строку сохраняет только минуты) почти наверняка дело в формате))

у себя когда делали сверку с сервером, то время хранили в миллисекундах.
и к тому же в UTC, чтоб не было проблем с форматом локальным времени и тд. просто одинаковые для всех числа)
//save
long currenttime = System.DateTime.UtcNow.Ticks;
PlayerPrefs.SetString("key", currenttime.ToString());

//load
long savedTime = long.Parse(PlayerPrefs.GetString("key", currenttime.ToString()));
System.TimeSpan timeSpan = System.DateTime.UtcNow - new System.DateTime(savedTime);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shai_hulud
@shai_hulud
PlayerPrefs.Save() делаете?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы