Вы не удаляете слушателя.Поэтому в следующий раз, когда EditorApplication.update
будет вызван, вы уже "уничтожите" экземпляр редактора, на который указывает обратный вызов MyUpdate
, так что это будет null
.
Ошибка не произойдет, потому что serializedObject
будетбыть null
, но запись обратного вызова (ваш экземпляр MyCustomEditor
) в EditorApplocation.update
сама по себе равна null
.
Чтобы удалить обратный вызов, просто используйте ту же строку, но с -=
вместо.
Примечание. Также всегда можно «сохранить» / разрешить удалить слушателя, даже если он еще не существует.Так что я бы сделал
// This is called when the object gains focus
private void OnEnable()
{
// This makes sure the callback is added only once
EditorApplication.update -= MyUpdate;
EditorApplication.update += MyUpdate;
}
// This is called when the object loses focus or the Inspector is closed
private void OnDisable ()
{
EditorApplication.update -= MyUpdate;
}