Система рекордов для моей программы единства не работает - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь настроить систему рекордов, но результат не меняется вообще, хотя система оценок работает.Как мне сделать обновление текста с высокими показателями?

Я возился с кодом, пытаясь заставить его работать, но безрезультатно.

public Transform player;
public Text scoreText;
public Text highScore;


void start() => highScore.text = PlayerPrefs.GetInt("High Score", 0).ToString();

// Update is called once per frame
public void Update()
{
    scoreText.text = player.position.z.ToString("0");
    int scoreTextNumber = int.Parse(scoreText.text);

    if (scoreTextNumber > PlayerPrefs.GetInt("High Score", 0))
    {
        PlayerPrefs.SetInt("High Score", scoreTextNumber);
        highScore.text = scoreTextNumber.ToString();
    }

}

высокая оценка предназначена для обновления по мере обновления оценки, но она не меняется вообще.

1 Ответ

0 голосов
/ 03 июня 2019

Считайте, что player.position.z - это число с плавающей точкой. И если вы TryParse строка, представляющая число с плавающей точкой, трипарсе не удается.

В вашем конкретном случае вам вообще не нужен Parse, и вы можете использовать player.position.z напрямую (сначала приведите его к int). Это также намного лучше для производительности, так как вы делаете это в обновлении.

Также метод start должен быть написан с заглавной буквы Start().

public Transform player;
public Text scoreText;
public Text highScore;


void Start() => highScore.text = PlayerPrefs.GetInt("High Score", 0).ToString();

// Update is called once per frame
public void Update()
{
    int score = (int) player.position.z;
    scoreText.text = score.ToString("0");

    if (score > PlayerPrefs.GetInt("High Score", 0))
    {
        PlayerPrefs.SetInt("High Score", score);
        highScore.text = score.ToString();
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...