如何将得分值从一个场景传递到另一个场景?
我尝试了以下方法:
场景一:
void Start () { score = 0; updateScoreView (); StartCoroutine (DelayLoadlevel(20)); } public void updateScoreView(){ score_text.text = "The Score: "+ score; } public void AddNewScore(int NewscoreValue){ score = score + NewscoreValue; updateScoreView (); } IEnumerator DelayLoadlevel(float seconds){ yield return new WaitForSeconds(10); secondsLeft = seconds; loadingStart = true; do { yield return new WaitForSeconds(1); } while(--secondsLeft >0); // here I should store my last score before move to level two PlayerPrefs.SetInt ("player_score", score); Application.LoadLevel (2); }
场景二:
public Text score_text; private int old_score; // Use this for initialization void Start () { old_score = PlayerPrefs.GetInt ("player_score"); score_text.text = "new score" + old_score.ToString (); }
但屏幕上没有任何显示,也没有错误。
这是传递数据的正确方法吗?
我正在使用Unity 5免费版,为Gear VR开发游戏(这意味着该游戏将在android设备上运行)。
有什么建议吗?
除了playerPrefs之外,另一种肮脏的方法是在关卡加载期间通过调用对象DontDestroyOnLoad来保留对象。
DontDestroyOnLoad (transform.gameObject);
附加到游戏对象上的任何脚本都将保留,脚本中的变量也将保留。DontDestroyOnLoad函数通常用于保留整个GameObject,包括附加到它的组件以及它在层次结构中具有的任何子对象。
您可以创建一个空的GameObject,然后仅将包含要保留的变量的脚本放在其上。