обновление рекордов не работает в игре 2dunity - PullRequest
0 голосов
/ 14 сентября 2018

Я новичок в разработке игр для 2D Unity, и это моя первая игра.В этой игре у меня есть две сцены - одна - игра на сцене, а другая - игра на сцене.Когда я пытаюсь отобразить рекорд в игре за сценой, это не работает для меня.Вот код, который я попробовал:

public class highscore : MonoBehaviour {
    public Text hscore;

    private void Start() {
        hscore.text = PlayerPrefs.GetInt("highscore", 0).ToString();
    }

    public void Update() {
        if (GetComponent<Score>().score > PlayerPrefs.GetInt("highscore")) { 
            PlayerPrefs.SetInt("highscore", GetComponent<Score>().score);
            hscore.text = GetComponent<Score>().score.ToString();
        }
    }
}

Он останавливает игру на сцене и больше ничего не работает над этим.Кто-нибудь знает в чем проблема?Любая помощь будет полезна.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я предлагаю вам полностью переработать код.Например, зачем вам нужен дополнительный экран только для того, чтобы показать высокий балл.Переключение между сценами является довольно дорогостоящей операцией.И даже если вам нужны два экрана, вы должны обязательно установить логику «показывать высокий балл» вне вашего метода обновления.Теперь к решению: самый простой способ справиться с этим - использовать PlayerPrefs для обновления высокой оценки следующим образом: PlayerPrefs.SetInt("HighScore", yourScore); вы можете получить значение следующим образом: int highScore = PlayerPrefs.GetInt("HighScore", 0); Второй параметр необязательный, он возвращается, если нетHighScore установить до этого.Другое дело, что вы можете использовать всплывающее окно для отображения высокой оценки.Таким образом, вам не нужно переключаться между сценами.

0 голосов
/ 14 сентября 2018

Проверьте класс PlayerPrefs единицы:

https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

Как видите, GetInt() и SetInt() принимают значения из словаря. Вы должны сохранить эти значения на диске, чтобы передать их между сценами (или получить их при повторной загрузке игры).

Используете ли вы Save() перед выгрузкой старой сцены? Также ваш счет идет от предыдущей сцены? Если да, используете ли вы DontDestroyOnLoad(Object target) или это просто сценарий на сцене "ShowScore"? Если вы не передадите его из первой сцены, у него будут только значения по умолчанию, а не ваш счет. Надеюсь, я был достаточно ясен.

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