>
>
>
V3213. Unity Engine. The 'GetComponent'…


V3213. Unity Engine. The 'GetComponent' method must be instantiated with a type that inherits from 'UnityEngine.Component'.

Анализатор обнаружил, что в качестве аргумента для метода GetComponent (либо схожего с ним) классов Component или GameObject передан тип, который не наследуется от UnityEngine.Component и не является интерфейсом. В таких случаях метод всегда возвращает null либо исключение. Некорректно использовать эти методы подобным образом.

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

using UnityEngine;

class Camera : MonoBehaviour
{
  private int num;

  private void Start()
  {
    num = GetComponent<int>();
  }
}

В качестве аргумента метода GetComponent используется базовый тип int. Вызов метода всегда будет вызывать исключение.

Пример с аргументом typeof(int):

using UnityEngine;

class Camera : MonoBehaviour
{
  private int num;

  private void Start()
  {
    Component foundComponent = GetComponent(typeof(int));
  }
}

Метод GetComponent с аргументом typeof(int) всегда будет вызывать исключение.

В подобных ситуациях необходимо провести рефакторинг кода, чтобы избавиться от некорректного вызова метода.

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