V3210. Unity Engine. Unity does not allow removing the 'Transform' component using 'Destroy' or 'DestroyImmediate' methods. The method call will be ignored.
The analyzer has detected an issue: the 'Destroy' method of the 'UnityEngine.Object' class or the 'DestroyImmediate' method is called with an argument of the 'UnityEngine.Transform' type. It leads to an error when calling the method. Destroying the 'Transform' component is not allowed in Unity.
The example:
using UnityEngine;
class Projectile : MonoBehaviour
{
public void Update()
{
if (....)
{
Destroy(transform);
}
....
}
}
The 'transform' property from the 'MonoBehaviour' base class returns an instance of the 'Transform' class, which is passed as the argument to the 'Destroy' method. If the method is called this way, Unity will display an error message that the component will not be destroyed.
The Unity message:
Can't destroy Transform component of 'Projectile'. If you want to destroy the game object, please call 'Destroy' on the game object instead. Destroying the transform component is not allowed.
The example of the fixed code:
using UnityEngine;
class Projectile : MonoBehaviour
{
public void Update()
{
if (....)
{
Destroy(gameObject);
}
....
}
}
In this case, the entire game object and its 'Transform' component will be destroyed.
This diagnostic is classified as: