如何从另一个场景访问布尔值?

How do I access booleans from another scene?

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

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

您必须通过调用 DontDestroyOnLoad()

来标记上一个场景中的对象

Source

但这是如何使用 Unity 的不正确方法

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

private bool myBool = false;

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

以上假设在加载新的 scene.tThen 时调用 LoadingNewScene 您有一个 class 附加到另一个场景中的游戏对象:

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