# V3210. Unity Engine. Unity does not allow removing the 'Transform' component using 'Destroy' or 'DestroyImmediate' methods. The method call will be ignored.

Анализатор обнаружил, что для вызова метода 'Destroy' или 'DestroyImmediate' класса 'UnityEngine.Object' используется аргумент типа 'UnityEngine.Transform'. Это приводит к ошибке во время вызова метода. Удаление компонента 'Transform' из игрового объекта не допускается в Unity.

Рассмотрим пример:

    using UnityEngine;

    class Projectile : MonoBehaviour
    {
      public void Update()
      {
        if (....)
        {
          Destroy(transform);
        }
        ....
      }
    }

Свойство 'transform' из базового класса 'MonoBehaviour' возвращает экземпляр класса 'Transform', который передается в качестве аргумента методу 'Destroy'. При таком вызове метода Unity выдаст сообщение об ошибке, а сам компонент не будет уничтожен.

Сообщение Unity:

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.

Один из вариантов исправления ошибочного кода:

    using UnityEngine;

    class Projectile : MonoBehaviour
    {
      public void Update()
      {
        if (....)
        {
          Destroy(gameObject);
        }
        ....
      }
    }

В этом случае будет уничтожен весь игровой объект, включая привязанный к нему компонент 'Transform'.

Данная диагностика классифицируется как:

CWE-686