Исключение Null Reference при попытке присвоить значение объекту TextMeshPro в UnityC#

Место общения программистов C#
Ответить
Anonymous
 Исключение Null Reference при попытке присвоить значение объекту TextMeshPro в Unity

Сообщение Anonymous »

Я впервые использую Unity и пытаюсь выполнить очень простую операцию. Когда яблоко падает в корзину, счетчик очков увеличивается в корзине. Однако каждый раз, когда яблоко попадает в корзину, выдается исключение нулевой ссылки, и моя игра вылетает. Я знаю, что где-то допускаю ошибку, но не совсем понимаю, откуда она. Всякий раз, когда выдается нулевая ссылка, я не вижу никаких операторов отладки и поэтому не могу определить, достигнуты ли эти операторы отладки или они не печатаются из-за исключения? У меня также сложилось впечатление, что мне нужно прикрепить свой счетчик очков к соответствующему объекту TextMesh в качестве компонента, и оба сценария и объекта должны называться одинаково. Я могу предположить, что я неправильно прикрепляю скрипт к объекту TextMesh или что-то на стороне единства, потому что мой код «выглядит» правильно для меня со ссылкой на некоторые рабочие примеры, которые я видел в Интернете. Спасибо, что нашли время прочитать мой пост, и спасибо за ваше время.
Корзина — это игровой объект, и это сопровождающий его скрипт:

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

using UnityEngine;

public class Basket : MonoBehaviour
{
public AppleScoreCounter scoreCounter;
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Apple"))
{
scoreCounter.GainScore(1);
//do i need to write a destructer class for other???
Destroy(other.gameObject);
Debug.Log("Trigger created by " + other.gameObject.name);
}
}
}
А это мой скрипт счетчика очков, прикрепленный к объекту textMeshProUGUI:

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

using UnityEngine;
using TMPro;

public class AppleScoreCounter : MonoBehaviour
{
private TextMeshProUGUI scoreCounter;
public int scorePoints;

private void Awake()
{

Debug.Log("Awake started");

scoreCounter = GetComponent();

Debug.Log("Got past score counter");
}

private void Start()
{
scorePoints = 0;
//UpdateScoreUI();
Debug.Log("Got to end of start");
}

//called when something happens(apple gets caught)
public void GainScore(int points = 1)
{
scorePoints += points;
UpdateScoreUI();
}

private void UpdateScoreUI()
{
Debug.Log("Got to Update and broke");

scoreCounter.text = scorePoints.ToString();
Debug.Log("Score Points " + scorePoints);

}

}
И, наконец, снимок экрана моей иерархии с открытым инспектором объектов textMeshProUGUI.

введите здесь описание изображения

Подробнее здесь: https://stackoverflow.com/questions/798 ... ugui-objec
Ответить

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

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

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

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

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