Анализатор обнаружил потенциальную ошибку, связанную с тем, что производный от UnityEngine.Object
объект был использован с pattern matching'ом для проверки на null
.
Согласно документации Unity, не рекомендуется использовать pattern matching с объектами, производными от UnityEngine.Object
.
Дело в том, что проверка на null
с помощью pattern matching не учитывает возможность уничтожения объектов, производных от UnityEngine.Object
. Вследствие чего проверка может иметь некорректный результат.
Рассмотрим пример:
class CustomComponent: MonoBehaviour { public bool HitConfirm(....) { Projectile bullet; .... if(....) Destroy(bullet); if (bullet is not null) {....} } }
В данном случае, при проверке bullet
с помощью pattern matching'a, не будет учитываться возможность, что объект может быть уничтожен.
Чтобы это исправить, лучше использовать проверку с помощью оператора ==
или !=
.
Исправленный вариант:
class CustomComponent: MonoBehaviour { public bool HitConfirm(....) { Projectile bullet; .... if(....) Destroy(bullet); if (bullet != null) {....} } }