Вебинар: Каждая идиома когда-то была проблемой - 11.09
Анализатор обнаружил, что для вызова метода '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'.
Диагностическое правило классифицируется как:
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: