Почему я теряю данные в скриптовых объектах между запусками на Android, а не в редакторе?

Итак, у меня есть объект сценариев, который мне нужен, чтобы отслеживать дату. Поскольку объекты сценариев не отслеживают дату между средами выполнения самостоятельно, я придумал следующее:

public long EndTimeLong;
private DateTime endTime;
public DateTime EndTime
{
    get
    {
        return endTime;
    }
    set
    {
        EndTimeLong = value.ToBinary();
        endTime = value;
    }
}

Таким образом, устанавливая EndTime в любое значение, он сохраняется как Binary в EndTimeLong.

Затем, перед тем, как использовать это во время выполнения, я вызываю следующий метод:

public void ReInit()
{
    EndTime = DateTime.FromBinary(EndTimeLong);
    ...
}

Поэтому, прежде чем я вообще использую объект сценариев, исходная дата должна быть восстановлена.

Тем не менее, это похоже на работу найти в редакторе, но не в Android.

Я могу сказать, что в редакторе я запускаю метод, который устанавливает конечное время равным 60 секундам в будущем. Затем я останавливаю и начинаю играть в редактор, и он знает, что конечное время еще впереди и действует соответственно. (показывает некоторые вещи и т. д.) На Android, однако, он относится к нему, как будто время не в будущем. Почему это поведение будет отличаться между двумя? И как я мог решить это?

1 ответ

Я предполагаю, что вы записываете свое значение EndTimeLong в файл между сессиями, и именно так вы загружаете его позже. Если вы предоставите больше информации о том, как вы сохраняете свои данные между сессиями, мы можем предоставить дополнительную помощь.

При этом, если это все, что вам нужно сохранить между сессиями, я бы вместо этого использовал Unity PlayerPref: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

Другие вопросы по тегам