Код: Выделить всё
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 = GetComponent() ;
Я поискал и использовал оператор if, чтобы правильно присвоить изображение переменной, но оно все равно оказалось нулевым. Здесь я подумал, что GetComponent неправильно назначен переменной Image, поэтому я проверил это в сеансе отладки, и теперь переменная img больше не была нулевой. Но затем, когда я выключил сеанс, он все еще был нулевым.
Вы, наверное, заметили, что появился новый оператор if, в котором я сделал исключение с нулевым аргументом. . Я нашел это в Интернете. В исключении нулевого аргумента было сказано, что «Значение не может быть нулевым», и было сказано, что именем параметра является «Элемент». Во время тестирования игры я обнаружил, что пользовательского интерфейса изображения в Img RespawnItem там не было, но когда я прекратил тестирование игры, оно снова появилось в Img.
Что я могу сделать с этой проблемой?
Подробнее здесь: https://stackoverflow.com/questions/784 ... -and-debug
Мобильная версия