Как работать с PlayerPrefs?

Привет делаю игру и столкнулся с проблемой , что нужно сохранять монеты :) узнал , что есть PlayerPrefs и даже понял как им пользоваться (если так можно сказать) вопшем скрипт работает но больше 1 он не сохраняет :(

это код сохранения
public  Text text;

    public int Score = 0;    // вот эта переменная 

    private void OnApplicationQuit()
    {
        PlayerPrefs.SetInt("Key1", Score);
        
    }
    public void Update()
    {
        PlayerPrefs.GetInt("Key1");
    }
  
    
    private void OnTriggerEnter2D(Collider2D collision)
    {
        Score++;
        PlayerPrefs.SetInt("Key1", Score);
        Destroy(gameObject);
        
    }

а это загрузки
public Text text;

    public int Score;

    private void Start()
    {
        Score = PlayerPrefs.GetInt("Key1");
        
    }
    private void Update()
    {
        Score = PlayerPrefs.GetInt("Key1");
        text.text = "$ " + Score ;
        
    }
  • Вопрос задан
  • 851 просмотр
Решения вопроса 1
WasTabon
@WasTabon
Сохранение -
private void OnApplicationQuit()
    {
        PlayerPrefs.SetInt("Key1", Score);
        
    }


Загрузка -
private void Awake()
    {
        Score = PlayerPrefs.GetInt("Key1", 0);
        
    }

И всё
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DanielMcRon
@DanielMcRon
C# && Unity
При выходе если счёт был 1 в прошлый раз, а в этот ничего не собрал, то код присвоит 0 счёту. И ещё не понимаю зачем постоянно в Update брать значение с PlayerPrefs, киньте обновление текста в OnTriggerEnter где есть инкрементация score

Так же у вас как-то запутанно всё. У вас уничтожается объект и если дело не доходит до applicationquit, то не будет сохранения. Скрипт то вместе с объектом уничтожается. Делайте отдельный скрипт который отвечает за сохранение /загрузку.
Ответ написан
Ваш ответ на вопрос

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

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