Как сбросить PlayerPrefs при запуске игры, но сохранить значение при загрузке сцен? - PullRequest
0 голосов
/ 29 марта 2020

У меня есть скрипт, который имеет переменную int. В этом сценарии я устанавливаю PlayerPrefs из этого int, а затем вызываю этот PlayerPref в другом сценарии на другой сцене.

Когда я играю в новую игру, я хочу, чтобы prefs сбрасывал и продолжал отслеживать в игре, даже при загрузке между сценами.

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

Я хочу сделать функцию «Новая игра», но обычное сохранение данных, если пользователь переходит от сцены к сцене.

void Start()
    {       
        PlayerPrefs.DeleteAll();        
    }
void Update()
    {
        passScore = PlayerPrefs.GetInt("pass");
        passScore2 = PlayerPrefs.GetInt("pass2");
        passScore3 = PlayerPrefs.GetInt("pass3");
    }

Original Int is stati c int.

1 Ответ

1 голос
/ 29 марта 2020

void Start() запускается каждый раз, когда вы меняете сцены и скрипт активен.

Вам нужно будет удалить все настройки игрока только тогда, когда игра действительно начнется.

Я бы сделал это: Создайте новый пустой объект, прикрепите к нему скрипт.

В сценарии введите:

private void Awake()
{
        DontDestroyOnLoad(this.gameObject);
        PlayerPrefs.DeleteAll();
}

Не забудьте присоединить сценарий к пустому игровому объекту и удалить то, что вы уже сделали (удалите пустое начало, где вы удаляете настройки игрока).

РЕДАКТИРОВАТЬ: Я забыл сказать, что это делает! Сожалею! DontDestoryOnLoad делает объект прикрепленным в иерархии, даже если вы переключаете сцены. Бит Awake автоматически запускается, когда сценарий просыпается (т.е. когда он впервые виден). В совокупности эти два параметра запускают функцию PlayerPrefs.DeleteAll() только один раз, то есть в начале игры. Не имеет значения, если вы переключаете сцены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...