Unity NullReferenceException

Unity NullReferenceException
alibaba desu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Witam
Realizuję prototyp prostej gry z książki "Introduction to game design prototyping and development" i mam problem z naliczaniem punktów. Po wywołaniu funkcji OnCollisionEnter i sprawdzeniu tagu prefabrykat usuwa się ale punkty nie naliczają się. W prawidłowo działającym kodzie po przypisaniu do scoreGT komponentu text po każdym wywołaniu collision i if powinna zostać przypisana do zmiennej score przekonwertowana na int zmienna scoreGT, powinny zostać dodane punkty a następnie powinna znowu nastąpić konwersja na string. Kod pochodzi z książki.

Kopiuj
public Text scoreGT;

void start()
    {
        GameObject scoreGO = GameObject.Find("ScoreCounter");
        scoreGT = scoreGO.GetComponent<Text>();
        scoreGT.text = "0";
    }

 void OnCollisionEnter(Collision coll)
    {
        GameObject collideWith = coll.gameObject;
        if (collideWith.tag == "Apple")
        {
            Destroy(collideWith);

            int score = int.Parse(scoreGT.text);
            score += 100;
            scoreGT.text = score.ToString();

        }
    }

W konsoli Unity pojawia się błąd NullReferenceExpection w linii 17 zawierającej przypisanie do zmiennej score przekonwertowanej zmiennej scoreGT i z tego co zrozumiałem próbuje odnieść się do nieistniejącego elementu ale nie wiem jak. Problemem prawie na pewno nie jest Unity, wszystkie potrzebne UI istnieją.

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5226
0

Nie znam się na Unity, ale czy na pewno tutaj odnajduje Ci to co potrzeba? czy nazwa ScoreCounter jest nadal aktualna?

Kopiuj
GameObject scoreGO = GameObject.Find("ScoreCounter");
scoreGT = scoreGO.GetComponent<Text>();
alibaba desu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

@WeiXiao: Najprawdopodobniej, istnieje jako GameObject element UI
screenshot-20201121202726.png

Boski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 142
0

zmień:

Kopiuj
void start()

na:

Kopiuj
void Start()
alibaba desu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

@Boski: Faktycznie, Dziękuję ci, nigdy bym tego nie zauważył, teraz sens ma dlaczego próbowałem odnieść się do nieistniejącej zmiennej, bo void start() nigdy się nie wykonał, Dziękuję raz jeszcze.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.