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)
всегда будет вызывать исключение.
В подобных ситуациях необходимо провести рефакторинг кода, чтобы избавиться от некорректного вызова метода.
Данная диагностика классифицируется как: