Код: Выделить всё
public class RespawnItem : MonoBehaviour
{
//----PUBLICS----//
public PlayerCollectingSystem playerCollect;
public Image img;
//----PRIVATES----//
//----SERIALIZED PRIVATES----//
[SerializeField] private Transform playerLocation;
[SerializeField] private GameObject protag;
private void Awake()
{
img = GetComponent();
playerLocation = GetComponent();
playerCollect = protag.GetComponent
();
}
public void Respawn()
{
if (img.overrideSprite == gameObject.GetComponent().sprite)
{
transform.position = playerLocation.position;
gameObject.GetComponent().enabled = true;
}
}
}
Скрипт RespawnItem прикрепляется к GameObject называется «item».
Переменная изображения img — это изображение, которое хранится в инспекторе.
Я нашел нулевую ссылку исключение в
Код: Выделить всё
img.overrideSprite == gameObject.GetComponent().sprite
NullReferenceException: ссылка на объект не установлена на экземпляр объекта
Здесь переменная img равна нулю.
Когда я тестировал игру и играл в нее, я обнаружил, что изображения больше нет в img. переменная инспектора. Когда я прекратил тестирование, оно снова оказалось в переменной. Именно по этой причине оно было нулевым.
Итак, я знаю, что такое ноль, и это переменная img. Причина, по которой он был нулевым, заключалась в том, что он отсутствовал, пока я его тестировал.
Я посмотрел, как это исправить, и прочитал у Copilot, ИИ, который учится из других источников, и меня зацепило повторное импортирование сценария. Другие казались маловероятными, связанными с этой проблемой, особенно когда речь шла о «Синтаксических ошибках». Синтаксические ошибки появляются при орфографических ошибках.
Единственная проблема заключалась в том, что я не знаю, как это исправить.
Я думаю, что это может быть GetComponent, но я знаю не знаю, как это исправить.
Это видео предназначено только для наглядности.
Как мне решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/784 ... -inspector