C# PlayerPrefs保存setActive状态

C# PlayerPrefs保存setActive状态,c#,unity3d,monodevelop,unity5,gameobject,C#,Unity3d,Monodevelop,Unity5,Gameobject,我有一些脚本是从我的游戏场景中运行的,它在我的菜单场景中隐藏了一个游戏对象。但是,每次关闭和重新打开游戏时,“我的菜单”场景中的游戏对象都会被设置回活动状态。我希望被隐藏的游戏对象保持隐藏,即使是通过重新加载游戏。这是我目前掌握的密码 DontDestroyOnLoad(gameObject); SceneManager.LoadScene("sceneSelectBeta"); GameObject[] gameObjectArray = GameObject.F

我有一些脚本是从我的游戏场景中运行的,它在我的菜单场景中隐藏了一个游戏对象。但是,每次关闭和重新打开游戏时,“我的菜单”场景中的游戏对象都会被设置回活动状态。我希望被隐藏的游戏对象保持隐藏,即使是通过重新加载游戏。这是我目前掌握的密码

     DontDestroyOnLoad(gameObject);
     SceneManager.LoadScene("sceneSelectBeta");
     GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag ("Level2Block");
     foreach(GameObject go in gameObjectArray) {
         go.SetActive (false);
         PlayerPrefs.????? ("?????", ?????);
     }
     DestroyObject(gameObject);
我使用PlayerPrefs在我的项目中保存其他信息,但我不确定如何实现它。在这种情况下,任何帮助或建议都将不胜感激

更新2

带有playerprefs的当前代码将编译,但仍不保存对象状态

PlayerPrefs.SetInt ("Set Active", 1);

DontDestroyOnLoad(gameObject);
GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag ("Level2Block"); //find game object with tag
foreach(GameObject go in gameObjectArray) {
    go.SetActive (false);
    bool active = PlayerPrefs.GetInt("Set Active" , 1) == 0;
}

您可能需要执行类似于
PlayerPrefs.SetInt(go.Name,0)的操作
调用它们处于非活动状态(0表示false,1表示true)。加载场景时,在
Start
方法之一中,以相同的方式循环浏览场景,并执行如下操作

 foreach(GameObject go in gameObjectArray) {
     bool active = PlayerPrefs.GetInt(go.Name) == 1;
     go.SetActive (active);
 }

在下面的人的帮助下,通过谷歌和本教程视频进行了一些自我搜索,最终我解决了这个问题

PlayerPrefs不支持保存bool值,这让我很恼火,因此我通常会编写一个包装,将True和False定义为1和0,这样我仍然可以在类中使用bool逻辑,并用SetBool和GetBool方法对其进行扩展。感谢@Cody的建议,目前我必须尝试的内容和保存的对象状态包含在更新2中,它将编译无误,但当游戏重新加载时,该对象仍会重新启用Unity加载场景时,它将加载它,就像编译之前保存的一样。您将无法保持游戏对象处于活动状态或不活动状态。您需要在某个地方加载代码,以便从PlayerPrefs检查状态并手动设置。