Среда, 24 Апреля 2024, 17:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как работает SceneManager.sceneLoaded логика?
Как работает SceneManager.sceneLoaded логика?
alexsilentДата: Понедельник, 27 Сентября 2021, 13:31 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
В документации чтобы заработал OnSceneLoaded есть пример с OnEnable и OnDisable,
и непонятной строкой:
Код
SceneManager.sceneLoaded += OnSceneLoaded;


А что если у меня этот скрипт с DontDestroyOnLoad, то получается OnDisable не будет работать,
пока из игры не выйдешь?!
1) А не будет ли ничего страшного, если не будет использоваться эта строка после перезагрузки уровня?
Код
SceneManager.sceneLoaded -= OnSceneLoaded;

И что вообще эта строка делает? Не будет ли какой-то утечки без неё? Зачем там минус?!

2) Можно ли вообще убрать функцию OnDisable ?

И вот мой код скрипта:

Код

    void Awake() {
  DontDestroyOnLoad(gameObject);
    }
    void OnEnable()
    {
        SceneManager.sceneLoaded += OnSceneLoaded;
    }
    void OnDisable()
    {
        SceneManager.sceneLoaded -= OnSceneLoaded;
    }
    
     void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
    OnLevelLoaded();
     }


Сообщение отредактировал alexsilent - Понедельник, 27 Сентября 2021, 13:38
drcrackДата: Понедельник, 27 Сентября 2021, 15:02 | Сообщение # 2
старожил
Сейчас нет на сайте
-= убирает твой метод из списка обработчиков события sceneLoaded и после этого он больше не будет вызываться
обычно это делают при отключении/разрушении обьектов
если твой обьект существует до конца игры (и работает до конца игры), ты можешь -= не делать, ниче страшного не случится
но лучше все-таки -= поставить в OnDestroy, а += в Awake


Сообщение отредактировал drcrack - Понедельник, 27 Сентября 2021, 15:03
alexsilentДата: Понедельник, 27 Сентября 2021, 17:03 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Цитата drcrack ()
списка обработчиков

хотя может быть я не шарю что такое обработчик, надо реально проверить убрать из OnEnable и потестировать только с Awake


Сообщение отредактировал alexsilent - Понедельник, 27 Сентября 2021, 17:24
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как работает SceneManager.sceneLoaded логика?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг