Object reference not set to an instance of an object

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using TMPro;

using JetBrains.Annotations;

using UnityEngine.UI;

public class Quiz : MonoBehaviour

{

[Header("Questions")]

[SerializeField] TextMeshProUGUI questionText;

[SerializeField] QuestionSO question;

[Header("Answers")]

[SerializeField] GameObject[] answerButtons;

int correctAnswerIndex;

bool hasAnsweredEarly;

[Header("Button Colors")]

[SerializeField] Sprite defaultAnswerSprite;

[SerializeField] Sprite correctAnswerSprite;

[Header("Timer")]

[SerializeField] Image timerImage;

Timer timer;

void Start()

{

    timer = FindObjectOfType<Timer>();

    GetNextQuestion();

}

void Update()

{

    timerImage.fillAmount = timer.fillFraction;

    if(timer.loadNextQuestion)

    {

        hasAnsweredEarly = false;

        GetNextQuestion();

        timer.loadNextQuestion = false;

    }

    else if(!hasAnsweredEarly  && !timer.isAnsweringQuestion)

    {

        DisplayAnswer(-1);

        SetButtonState(false);

    }

}

public Timer GetTimer()

{

    return timer;

}

public void onAnswerSelected(int index, Timer timer)

{

    hasAnsweredEarly = true;

    DisplayAnswer(index);

    SetButtonState(false);

    timer.CancelTimer();

}

void DisplayAnswer(int index)

{

    Image buttonImage;

    if(index == question.GetCorrectAnswerIndex())

    {

        questionText.text = "Correct!";

        buttonImage = answerButtons[index].GetComponent<Image>();

        buttonImage.sprite = correctAnswerSprite;

    }

    else

    {

        correctAnswerIndex = question.GetCorrectAnswerIndex();

        string correctAnswer = question.GetAnswer(correctAnswerIndex);

        questionText.text = "Sorry, the correct answer is " +correctAnswer;

        buttonImage = answerButtons[correctAnswerIndex].GetComponent<Image>();

        buttonImage.sprite = correctAnswerSprite;

    }

}

void GetNextQuestion()

{

    SetButtonState(true);

    DisplayQuestion();

    SetDefaultButtonSprites();

}

void DisplayQuestion()

{

    questionText.text = question.GetQuestion();

    for(int i=0;i<answerButtons.Length;i++)

    {

        TextMeshProUGUI buttonText = answerButtons[i].GetComponentInChildren<TextMeshProUGUI>();

        buttonText.text = question.GetAnswer(i);

    }

}

void SetButtonState(bool state)

{

    for (int i = 0; i < answerButtons.Length; i++)

    {

        Button button = answerButtons[i].GetComponent<Button>();

        button.interactable = state;

    }

}

void SetDefaultButtonSprites()

{

    for (int i = 0; i < answerButtons.Length; i++)

    {

        Image buttonImage = answerButtons[i].GetComponent<Image>();

        buttonImage.sprite = defaultAnswerSprite;

    }

}

}

Hi @Ansh_Kansara,

Welcome to our community! :slight_smile:

NullReferenceException means that a reference (“link”) to an instance is missing. Double click on the error message to see to which line in your code it is referring. If you exposed a field in the Inspector, make sure that it’s not empty.

Did this help you fix the problem?


See also:

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.

Privacy & Terms