繁体   English   中英

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

[英]Unity - C# : how can I use a value in different scenes?

我制作了我的第一个 Unity3D 游戏。 这是一款具有无限道路的赛车游戏。 我也做了一些捡硬币。 问题是当我拿起硬币然后我 go 到商店菜单查看它是否添加到总硬币中,直到我玩另一轮然后我之前收集的硬币才会被添加。 这就像一个延迟或什么的。

是不是因为我不知道如何在不同的场景中使用一个值? 或者它,是别的东西。 有人告诉我使用 PlayerPrefs,我在脚本中使用了它,但为此,我的意思是硬币的数量,我不知道如何使用它。

下面的脚本是我的玩家脚本,我在其中计算拾取硬币和其他一些与玩家相关的东西。 我只带了Ontrigger和count相关的代码。

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);
  }
}

第一个选项,您可以为包含数据作为容器的特定游戏对象添加“DontDestroyOnLoad”。 所以它可以用作场景之间的共享数据。

或制作'Singleton' class 并将其用作数据容器,它可能是选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM