PlayerPrefs 保存 setActive 状态

问题描述 投票:0回答:2

我有一些从我的游戏场景运行的脚本,它隐藏了我的菜单场景上的游戏对象。然而,每次游戏关闭并重新打开时,我的菜单场景中的游戏对象都会被设置回活动状态。我希望隐藏的游戏对象保持隐藏状态,即使通过游戏重新加载也是如此。这是我目前拥有的代码。

     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;
}
c# unity-game-engine gameobject
2个回答
1
投票

您可能需要执行类似

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);
 }

1
投票

在下面的人的帮助下,通过谷歌进行了一些灵魂搜索,最终找到了这个教程视频 - https://www.youtube.com/watch?v=uw0kZ72zCvE我能够解决这个问题

© www.soinside.com 2019 - 2024. All rights reserved.