Я знаю, что OnDisable вызывается, как я проверил с помощью Debug.Log. Событие не вызывается в новой сцене до того, как я нажму кнопку в новой сцене.
После добавления if (this != null) возникает ошибка ушел. Проверка того, имеет ли gameObject значение null, не работает. Похоже, что событие не отписывается и метод вызывается для уничтоженного объекта из предыдущей сцены.
Код очень простой:
Код: Выделить всё
private void OnEnable()
{
AdjustGraphics();
GameSettings.GraphicsChanged += AdjustGraphics;
}
private void OnDisable()
{
GameSettings.GraphicsChanged -= AdjustGraphics;
}
private void AdjustGraphics()
{
//without this line I get the error
if (this != null)
gameObject.SetActive(GameSettings.Graphics >= requiredQuality);
}
Я знаю, что объекты в Unity не уничтожаются сразу, но OnDisable вызывается вовремя, поэтому мой скрипт/объект больше не должен прослушивать событие GameSettings.GraphicsChanged при загрузке новой сцены.
Подробнее здесь: https://stackoverflow.com/questions/583 ... -ondisable