Что делать, если GetComponent не работает должным образом с переменными и сеансом отладки?C#

Место общения программистов C#
Ответить
Anonymous
 Что делать, если GetComponent не работает должным образом с переменными и сеансом отладки?

Сообщение Anonymous »

Итак, в настоящее время я создаю функции инвентаризации для своей игры Michael. Я писал скрипт под названием RespawnItem.

Код: Выделить всё

public class RespawnItem : MonoBehaviour
{
//----PUBLICS----//

//----PRIVATES----//

//----SERIALIZED PRIVATES----//
[SerializeField] private Transform playerLocation;
[SerializeField] private Image img;
[SerializeField] private BetterItemScript imgOfObj;

private void Awake()
{
img = GetComponentInChildren();
GameObject objOfSpawn = GameObject.Find("Item");
imgOfObj = objOfSpawn.GetComponent();
}

public void Respawn()
{
if (img == null)
{
throw new System.ArgumentNullException(name);
}

if (img.overrideSprite == imgOfObj.image)
{
//set object location to player
transform.position = playerLocation.position;

//enable the object
gameObject.SetActive(true);
}

}

public void DisableItem()
{

}
}
Я обнаружил исключение нулевой ссылки в

Код: Выделить всё

img.overrideSprite = gameObject.GetComponent().image
где переменная img имеет значение null.
Я использовал сеанс отладки, чтобы посмотреть, что случилось, и обнаружил проблему в img = GetComponent() ;
Я поискал и использовал оператор if, чтобы правильно присвоить изображение переменной, но оно все равно оказалось нулевым. Здесь я подумал, что GetComponent неправильно назначен переменной Image, поэтому я проверил это в сеансе отладки, и теперь переменная img больше не была нулевой. Но затем, когда я выключил сеанс, он все еще был нулевым.

Вы, наверное, заметили, что появился новый оператор if, в котором я сделал исключение с нулевым аргументом. . Я нашел это в Интернете. В исключении нулевого аргумента было сказано, что «Значение не может быть нулевым», и было сказано, что именем параметра является «Элемент». Во время тестирования игры я обнаружил, что пользовательского интерфейса изображения в Img RespawnItem там не было, но когда я прекратил тестирование игры, оно снова появилось в Img.


Что я могу сделать с этой проблемой?


Подробнее здесь: https://stackoverflow.com/questions/784 ... -and-debug
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»