2017-01-17 2 views
-1

У меня есть сценарий под названием dataSheet, прикрепленный к DataSheject GameSheet. Как мне получить доступ к булевым файлам в ней из другой сцены?Как получить доступ к булевым файлам из другой сцены?

+0

С другой сцены или другой GameObject? Вы не можете получить доступ к чему-либо из другой сцены. – Programmer

+0

@Programmer У меня есть сцена с основным меню, и есть некоторые булевы, например, «подсказки», и мне нужно получить к ним доступ из другой сцены, чтобы показать подсказки или нет. – Sharpy

+0

Просто чтобы вы знали, почему вы сбиваетесь, - проголосовали в ваших вопросах. Вы должны сказать, что делаете, свою проблему и то, что вы ожидаете. Вы также должны указать, что вы пробовали. Если вы задаете один или два вопроса, которые требуют от людей запрашивать дополнительную информацию, вы, вероятно, будете голосуют с закрытым вопросом ... Ссылка на ваши будущие вопросы. – Programmer

ответ

3

Когда вы загружаете новую сцену, Unity уничтожает все объекты старой сцены, прежде чем создает объекты новой сцены.

Вы должны пометить объекты из предыдущей сцены, вызывая DontDestroyOnLoad()

Source

Но это не правильный подход, как работать с Unity

+0

И как это сделать правильно? – Sharpy

+2

Я бы не назвал это неправильным подходом. Вот как я это сделаю. Он масштабируемый и управляемый, где PlayerPrefs нет. – Maakep

+0

Почему PlayerPrefs не управляется или не масштабируется? – Everts

3

У вас есть класс, который вы хотите сохранить boolean:

private bool myBool = false; 

void LoadingNewScene() 
{ 
    int i = (mybool == true) ? 1 : 0; 
    PlayerPrefs.SetInt("TheValue", i); 
} 

Вышеупомянутое предполагает, что загрузка NewScene вызывается при загрузке нового scene.tThen у вас есть класс, который прилагается к объекту игры в другом месте:

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

+0

I dream PlayerPrefs перестает использоваться для всего и ничего ... Это называется ** Предпочтения игрока ** по какой-то причине. Он не предназначен для хранения данных о самой игре. – Hellium

+0

Ну, вы не должны перестать мечтать, потому что они широко используются для этой «неправильной» цели.Независимо от того, сохраняете ли вы данные игрока или данные игры, это не имеет значения. Это всего лишь данные. Но вава. – Everts

+0

PlayerPrefs хранятся в реестре и, таким образом, могут быть легко изменены пользователями и производить мусор для компьютера. Я думаю, что лучше не дать начинающим использовать Player Prefs и указать им хороший способ. – Hellium

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