Unity-C#:如何在不同场景中使用值?

时间:2019-11-03 07:43:59

标签: c# unity3d

我已经制作了我的第一个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 ();
}

下面的代码是我的calculateCoin,其中我将收集的硬币计数添加到先前的值,并在商店场景文本框中显示总数:

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 :(得分:0)

第一个选项, 您可以为包含数据作为容器的特定GameObject添加“ DontDestroyOnLoad”。因此可以用作场景之间的共享数据。

或设置“ Singleton”类并将其用作数据容器,这可能是可选的。