如何从另一个场景访问布尔值?
How do I access booleans from another scene?
我有一个名为 dataSheet 的脚本附加到 GameObject DataSheet。如何从另一个场景访问其中的布尔值?
加载新场景时,Unity 在创建新场景的对象之前销毁旧场景的所有对象。
您必须通过调用 DontDestroyOnLoad()
来标记上一个场景中的对象
但这是如何使用 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
我有一个名为 dataSheet 的脚本附加到 GameObject DataSheet。如何从另一个场景访问其中的布尔值?
加载新场景时,Unity 在创建新场景的对象之前销毁旧场景的所有对象。
您必须通过调用 DontDestroyOnLoad()
但这是如何使用 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