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

How do you pass a variable to another script and/or scene in Unity?

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

我建议您使用播放器偏好设置:http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

例如,在您设置变量的场景中: PlayerPrefs.SetInt("Score",值);

在另一个场景中你明白了 PlayerPrefs.GetInt("Score",0);

第二次调用的0是默认值,如果不存在就return你0

PlayerPrefs 是一个非常坏的习惯 来存储场景之间的数据。它旨在存储游戏执行之间的数据,而不是场景;因为它会将您的数据保存在本地计算机上。

如果您想在场景之间传递数据,制作一个 GameManager 可能是个好主意,如官方网站上的 tutorial 中所述。

想法是:

  • 在你的每个场景上放置一个 "loader" 游戏对象,如果没有,它将实例化 GameManager
  • GameManager 维护对自身的静态引用,因此您可以通过调用 GameManager.instance.myScore(确保加载器具有是时候实例化它了)。

看一下教程,讲解的非常好。但是不要使用PlayerPrefs通过场景传递数据。

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

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

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