При каких условиях Unity может удалить объект / обнулить указатель? - PullRequest
2 голосов
/ 15 апреля 2019

В последнее время я получаю (очевидно, случайные) 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 (иногда; большую часть времени я получаю ожидаемый результат)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...