В последнее время я получаю (очевидно, случайные) MissingReferenceExceptions и NullReferenceExceptions.Мне удалось сузить его до двух пропавших переменных (плюс любые другие ссылки на их содержание).
Я дважды проверил все строки, которые ссылаются на эти переменные, ни одна из них ничего не удаляет и не обнуляет.Я также проверил места, куда попадают значения, но это не должно иметь большого значения, так как c # является сборщиком мусора (во всяком случае, они тоже ничего не удаляют).Кстати, эти объекты создаются с помощью new, и они не являются ни GameObjects, ни MonoBehaviours (но один из них - это List, содержащий MonoBehaviours).На них не ссылаются переменные экземпляра MonoBehaviours, которые также получают Destroyed.Конечно, на них все еще ссылались другие переменные экземпляра, в противном случае исключение не может быть выдано.
Хорошо, я не вставляю свои 3000+ строк кода.Кроме того, я не спрашиваю, где находится ошибка, а скорее как ее искать: при каких условиях Unity удаляет объекты / нулевые ссылки на них?
NullReferenceException: Object reference not set to an instance of an object
Level.WipeMoveable (Boolean keepAvailable) (at Assets/scripts/Level.cs:220)
Level.HandleRightClick (UnityEngine.GameObject clicked) (at Assets/scripts/Level.cs:184)
Selectable.OnClick (Int32 button) (at Assets/scripts/Selectable.cs:35)
Clickable.ButtonReleased (Int32 button) (at Assets/scripts/Clickable.cs:35)
Clickable.OnMouseOver () (at Assets/scripts/Clickable.cs:56)
Ожидаемый результат - оставшиеся объекты и ссылкинетронутыми, фактические выходные данные являются NullReferenceExceptions и MissingReferenceExceptions (иногда; большую часть времени я получаю ожидаемый результат)