Загрузить сохранение один раз

Столкнулся с проблемой. Делал сейв через PlayerPrefs, в котором идет сохранение в onapplicationquit, а загрузку в awake. И скрипт этот прицеплен к меню, и в этом же скрипте методы для увеличения этих значений(делал типа статистику). но вот проблема, когда я выхожу из уровня обратно в меню, он снова загружает сохранение...

private static int points;
private static int enemys;
private static int asteroids;
private static int shields;
private static int asteroidsLose;

private Saver sv = new Saver();

void Awake()
{

    if (PlayerPrefs.HasKey("SV"))
    {

        sv = JsonUtility.FromJson<Saver>(PlayerPrefs.GetString("SV"));

        points = sv.points;
        enemys = sv.enemys;
        asteroids = sv.asteroids;
        shields = sv.shields;
        asteroidsLose = sv.asteroidsLose;

    }
    else Debug.Log("Сохранения нет");

}


void Start()
{

}
void Update()
{

}

private void OnApplicationQuit()
{

    sv.points = points;
    sv.enemys = enemys;
    sv.asteroids = asteroids;
    sv.shields = shields;
    sv.asteroidsLose = asteroidsLose;

    PlayerPrefs.SetString("SV", JsonUtility.ToJson(sv));

}


[Serializable]
public class Saver
{
    public int points;
    public int enemys;
    public int asteroids;
    public int shields;
    public int asteroidsLose;
}

Ответы (1 шт):

Автор решения: Yaroslav

Это делается так:

public class YourMenu : MonoBehaviour {

    private static int _value;

    public static int Value {
        get { // Запрашиваем переменную
            if (_value == 0 && PlayerPrefs.HasKey("Value"))
               _value = PlayerPrefs.GetInt("Value"); // Загружаем значение если оно есть и не загружено
            return _value; // Отдаем переменную
        }
        set { // Задаем новое значение
            _value = value; // Обновляем значение
            PlayerPrefs.SetInt("Value", _value); // Сохраняем значение
        }
    }
}
// .....
int Value = YourMenu.Value;
YourMenu.Value = 5;
→ Ссылка