如何将变量传递给Unity中的另一个脚本和/或场景?

时间:2015-04-28 10:56:46

标签: c# variables unity3d

我正在开发一款需要得分的游戏。我想将我的变量传递给c#中的另一个场景。我尝试了很多解决方案,但没有一个有效!我有一个公共静态变量作为我的分数,我想把它传递给丢失的屏幕。

3 个答案:

答案 0 :(得分:5)

PlayerPrefs是一种非常糟糕的习惯,用于在场景之间存储数据。它被设计用于在游戏执行之间存储数据,而不是场景;因为它会在您的计算机上本地保存您的数据。

如果你想在场景之间传递数据,最好制作一个GameManager,如官方网站上的一个tutorial所述。

这个想法是:

  • 放一个"装载机"每个场景上的游戏对象,如果它不是
  • ,它将实例化GameManager
  • GameManager维护一个自身的静态引用,因此您可以通过调用 GameManager.instance.myScore 来访问它(在唤醒方法之后)(以确保加载器有时间实例化它)。

只需看一下教程,就可以很好地解释。但使用PlayerPrefs在您的场景中传递数据。

答案 1 :(得分:0)

我建议您使用playerprefs:http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

示例,在场景中设置变量: PlayerPrefs.SetInt( “分数”,值);

在另一个场景中你得到它 PlayerPrefs.GetInt( “分数”,0);

第二次调用时的0是默认值,如果它不存在,它将返回0

答案 2 :(得分:0)

您可以在Empty GameObject中创建一个Empty GameObject并使用DontDestroyOnLoad(),并将您想要传递的任何数据存储到附加到EmptyGameObject的脚本中的另一个场景中,并从下一个场景中的EmptyGameObject中检索数据。

请参阅youtube上的以下视频,了解此概念的实际应用:

https://www.youtube.com/watch?v=VauchY1uIB4