我有一些从我的游戏场景运行的脚本,它隐藏了我的菜单场景上的游戏对象。然而,每次游戏关闭并重新打开时,我的菜单场景中的游戏对象都会被设置回活动状态。我希望隐藏的游戏对象保持隐藏状态,即使通过游戏重新加载也是如此。这是我目前拥有的代码。
DontDestroyOnLoad(gameObject);
SceneManager.LoadScene("sceneSelectBeta");
GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag ("Level2Block");
foreach(GameObject go in gameObjectArray) {
go.SetActive (false);
PlayerPrefs.????? ("?????", ?????);
}
DestroyObject(gameObject);
我使用 PlayerPrefs 在我的项目中保存其他信息,但我不确定在这种情况下如何实现它,任何帮助或建议将不胜感激。
更新2。
带有玩家首选项的当前代码将编译,但仍然不保存对象状态。
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);
}
在下面的人的帮助下,通过谷歌进行了一些灵魂搜索,最终找到了这个教程视频 - https://www.youtube.com/watch?v=uw0kZ72zCvE我能够解决这个问题