Вызов метода из скрипта в объекте на другой сцене

Программирование на Юнити.

Вызов метода из скрипта в объекте на другой сцене

Сообщение Kakaha_228 25 мар 2023, 22:52

Приветствую. Делаю игру, в ней есть одна сцена с главным меню и несколько игровых сцен. Каждая сцена имеет объект с навзанием "gameParameters", к которомму привязан скрипт "GameParameters". В этом скрипте есть дополнительные параметры, к примеру метод "isMorning()", который меняет скайбокс на утренний и настраивает источник света под утро. Подобных методов для настройки сцены много и на каждой сцене есть объект с таким названием и скриптом. Проблема заключается в том, что когда я использую IEnumerator LoadSceneAsync() я не могу никак найти заранее этот объект. Вот мой код:
Синтаксис:
Используется csharp
IEnumerator LoadSceneAsync()
    {
        AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(_sceneNumber);

        while (!asyncLoad.isDone)
        {
            yield return null;
        }

        GameObject gameParametersObject = GameObject.Find("gameParameters");

        if (gameParametersObject != null)
        {
            GameParameters gameParameters = gameParametersObject.GetComponent<GameParameters>();

            if (gameParameters != null)
                        {
                                gameParameters.isMorning();
                                Debug.Log("Теперь на сцене утро");
                        }
            else
            {
                Debug.LogError("Объекта с параметрами нет");
            }
        }
        else
        {
            Debug.LogError("Объекта с параметрами точно нет");
        }
    }
 

Делал по каким-то туториалам с каких-то сайтов, но в итоге не метод не вызывается, ни в консоль ничего не пишется... В чём моя ошибка?
Да не нужна мне подпись...
Аватара пользователя
Kakaha_228
UNIт
 
Сообщения: 60
Зарегистрирован: 21 фев 2021, 14:12

Re: Вызов метода из скрипта в объекте на другой сцене

Сообщение Kakaha_228 25 мар 2023, 22:59

Есть ещё мысль сделать префаб со скриптом, в котором будут перечисляться разные параметры, по типу времени суток, погоды и т.п. На сцене с меню заполнять переменные этого скрипта в префабе, а на сцене с игровой лакацией считывать их из этого же префаба. Но будет ли это работать так, как я описал, или же при смене сцены префаб сбрасывает введенные данные?
Да не нужна мне подпись...
Аватара пользователя
Kakaha_228
UNIт
 
Сообщения: 60
Зарегистрирован: 21 фев 2021, 14:12

Re: Вызов метода из скрипта в объекте на другой сцене

Сообщение 1max1 26 мар 2023, 00:16

Посмотри в сторону https://docs.unity3d.com/Manual/class-S ... bject.html
Это поможет легко переносить данные сквозь сцены. Но там есть нюанс, при изменении данных, они сохраняются после выхода из плей мода. Если такое поведение неуместно, то надо создавать дублирующие переменные.

Синтаксис:
Используется csharp
[SerializeField] int _a; // задается в инспекторе
[System.NonSerialized] public int a; // может меняться в коде

//void OnEnable()
a = _a;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22