Unity - C #: как я могу использовать значение в разных сценах? - PullRequest
0 голосов
/ 03 ноября 2019

Я сделал свою первую игру Unity3D. Это гоночная игра с бесконечной дорогой. Я тоже сделал несколько пикап-монет. проблема в том, что когда я собираю монеты, а затем захожу в меню магазина, чтобы посмотреть, добавлено ли оно к общему количеству монет или нет, оно не добавляется до тех пор, пока я не разыграю другой раунд, а затем будут добавлены монеты, которые я собрал за раунд. Это как задержка или что-то в этом роде.

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

Скрипт ниже - это мой скрипт игрока, в котором яподсчитайте пикап монеты и некоторые другие вещи, связанные с игроком. Я привожу только Ontrigger и подсчитываю связанные коды.

void Start () {
    CameraAnimation = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Animator>();
    _GameManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent<GameManager>();
    _AudioSource = GetComponent<AudioSource>();
    count = 0;
    SetCountText ();
}

void OnTriggerEnter(Collider other){
       if(other.gameObject.tag == "Coins") {
             count = count + 1;
             SetCountText ();
        }
}

public void SetCountText(){
    CountText.text = count.ToString ();
}

Код ниже - это мой CalcuCoin, в котором я добавляю количество собранных монет к предыдущему значению и показываю сумму в текстовом поле сцены магазина:

public class CalculateCoin : MonoBehaviour{

    // Use this for initialization
    public static int Coin = 10000;
    public Text ShowCoin;
    void Start () {
        ShowCoin.text = PlayerPrefs.GetInt("Coin").ToString();
        Coin =PlayerPrefs.GetInt("Coin")+Player.count;
        PlayerPrefs.SetInt ("Coin", Coin);
  }
}

1 Ответ

0 голосов
/ 03 ноября 2019

Первый вариант. Вы можете добавить 'DontDestroyOnLoad' для конкретного GameObject, который включает данные в качестве контейнера. поэтому он может использоваться в качестве общих данных для сцены.

или класса Make 'Singleton' и использовать его в качестве контейнера данных; это может быть опция.

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