The analyzer has detected a potential error related to the object derived from UnityEngine.Object. This object was used with the null-conditional (?.) or null-coalescing (?? and ??= ) operator.
According to the Unity documentation, it is not recommended to use the ?., ??, and ??= operators. They cannot be overloaded, so they do not consider that objects derived from UnityEngine.Object may be destroyed. Therefore, the check may have an incorrect result.
Look at the example:
class CustomComponent: MonoBehaviour
{
public bool HitConfirm(....)
{
Projectile bullet;
....
if(....)
Destroy(bullet);
....
if(bullet?.isJammed())
{....}
}
}
When addressing bullet, the check with a null-conditional operator (?. ) will not consider that the object may be destroyed, since this operator cannot be overloaded.
To fix this, it is recommended to use a check with the == or != operator.
The fixed code:
class CustomComponent: MonoBehaviour
{
public bool HitConfirm(....)
{
Projectile bullet;
....
if(....)
Destroy(bullet);
....
if(bullet != null ? bullet.isJammed() : null)
{....}
}
}
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders: