2016-08-17 3 views
1

У меня есть сценарий, который запускается из моей игровой сцены, которая скрывает объект gameObject на моей сцене меню. Однако каждый раз, когда игра закрывается и снова открывается, gameObject в моей сцене меню возвращается к активному. Я хочу, чтобы gameObject был скрыт, чтобы оставаться скрытым даже через перезагрузку игры. Это тот код, который у меня есть на данный момент.PlayerPrefs для сохранения setActive state

 DontDestroyOnLoad(gameObject); 
    SceneManager.LoadScene("sceneSelectBeta"); 
    GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag ("Level2Block"); 
    foreach(GameObject go in gameObjectArray) { 
     go.SetActive (false); 
     PlayerPrefs.????? ("?????", ?????); 
    } 
    DestroyObject(gameObject); 

Я использую PlayerPrefs, чтобы сохранить другую информацию в моем проекте, но я не уверен, как реализовать это в данном случае, любая помощь или совет будет весьма признателен.

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

ответ

1

Вы можете захотеть сделать что-то вроде PlayerPrefs.SetInt(go.Name, 0); вспомнить, что они неактивны (используя 0 для ложной, 1 для истинного). При загрузке вашей сцены, в одном из ваших Start методов, цикл через него таким же образом, и сделать что-то вроде

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

Меня раздражает, что PlayerPrefs не поддерживает сохранение значения bool, поэтому я обычно заканчиваю тем, что пишу обертку, которая определяет True и False как 1 и 0, поэтому я все еще могу использовать логику bool с классом и расширить его с помощью методов SetBool и GetBool. – Cody

+0

Спасибо за совет @ Коди в тот момент, что я должен попытаться сохранить состояние объекта, включен в UPDATE 2, он будет компилироваться без ошибок, но все же объект снова включен, когда игра перезагружается. – Ethranes

+0

Когда Unity загружает сцены, он загружает его, как только он был сохранен перед компиляцией. Вы не сможете сохранить активный игровой объект или нет. Вам понадобится загрузить код где-нибудь, чтобы проверить состояние с PlayerPrefs и вручную установить его. – Cody

Смежные вопросы