Prefab PlayerScore в единстве дает значение на экране Gameover как 0 - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь сделать 3d-игру, в которой есть две сцены, одна сцена игры, а другая сцена GameOver. На игровой сцене счет подсчитывается в реальном времени, когда игрок движется вдоль оси z, используя следующий код:

using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour
{

    public Transform player;
    public Text ScoreValue; //means, input is required, since a variable has been created

    // Update is called once per frame
    void Update()
    {
        ScoreValue.text = ((player.position.z-15)/10).ToString("0"); //ToString("0") is to remove all decimal points
        PlayerPrefs.SetString("CurrentScore", ((player.position.z-15)/10).ToString("0"));
    }
}

Поскольку он находится на сцене уровня игры, счет рассчитывается в соответствии с движением игрока путем перетаскивания. объект игрока в сценарий. Когда игра заканчивается, сцена переходит на экран GameOver с помощью SceneManagement. Поскольку я хочу отображать счет из уровня игры в сцене «Игра поверх», я использую префаб для сохранения результата.

Теперь в сцене «Gameover» у меня есть текстовый объект, который я хотел обновить в финальной версии. значение оценки формируется из игрового уровня, поэтому я создал для него скрипт, который выглядит следующим образом:

using UnityEngine;
using UnityEngine.UI;

public class GameOverScore : MonoBehaviour
{
    public Text OverScore;

    void Update()
    {  

        OverScore.text = PlayerPrefs.GetFloat("CurrentScore").ToString();      

    }
}

Здесь вам нужно перетаскивать текст (значение оценки), который вы хотите обновлять всякий раз, когда уровень концы. Значение оценки по умолчанию в игре «Over over» устанавливается на: - Используя это, текст оценки в «Game Over» должен обновляться до окончательного значения игровой сцены. Но всякий раз, когда игра заканчивается и происходит переход к сцене Game Over, счет в сцене Game Over меняется с: '-', на: 0. Но когда уровень закончился, счет не был равен 0, может кто-нибудь сказать мне что делать или какой код использовать, чтобы значение в сцене Game Over обновлялось до конечного значения сцены уровня игры? Буду очень признателен, если вы поможете мне.

1 Ответ

1 голос
/ 27 апреля 2020

Вы устанавливаете значение PlayerPrefs в виде строки в первом сценарии. В следующем сценарии вы пытаетесь получить PlayerPrefs в качестве плавающего элемента. Unity хранит эти значения отдельно, даже если вы называете их одним и тем же именем.

OverScore.text = PlayerPrefs.GetString("CurrentScore")

Также считывайте: https://docs.unity3d.com/ScriptReference/PlayerPrefs.GetString.html

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