如何从其他场景访问布尔值?

时间:2017-01-17 14:00:52

标签: unity3d unity5 unity3d-2dtools

我有一个名为dataSheet的脚本附加到GameObject DataSheet。如何从另一个场景中访问其中的布尔值?

2 个答案:

答案 0 :(得分:3)

当您加载新场景时,Unity会在创建新场景的对象之前销毁旧场景的所有对象。

您必须通过调用DontDestroyOnLoad()

来标记上一场景中的对象

Source

如何使用Unity

答案 1 :(得分:3)

您有一个要保存布尔值的类:

private bool myBool = false;

void LoadingNewScene()
{
     int i = (mybool == true) ? 1 : 0;
     PlayerPrefs.SetInt("TheValue", i);
}

以上假设在加载新场景时调用了LoadingNewScene。然后你有一个附加到另一场景中游戏对象的类:

void Awake(){
     if(PlayerPrefs.HasKey("TheValue") == true){
         bool result = PlayerPrefs.GetInt("TheValue") > 0;
     }
}

您还可以使用MonoBehaviour回调,例如OnDestroy或SceneManager事件系统。

https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager-sceneLoaded.html