如果我想让问题成为精灵,我需要改变什么?

问题描述 投票:0回答:0

我现在就多个问题做我的项目。我已经有了所有的代码,但是当我尝试统一运行它时出现错误。对于多个答案,我也作为一个图像来做并且没有任何错误但是现在我想要我的问题作为一个图像发生错误.

提前致谢。

这是错误 NullReferenceException: Object reference not set to an instance of an object

-------- QuizManager 脚本 --------

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class QuizManager : MonoBehaviour
{

    public List<QuestionandAnswer> QnA;
    public GameObject[] options;
    public int currentQuestion;

    public GameObject Quizpanel;
    public GameObject GoPanel;

    //public Text QuestionTxt;
    public TextMeshProUGUI ScoreTxt;
    public Image QuestionImage;

    int totalQuestion = 0;
    public int score;

    private void Start()
    {
        totalQuestion = QnA.Count;
        GoPanel.SetActive(false);
        generateQuestion();
    }

    public void retry()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

    public void GameOver()
    {
        Quizpanel.SetActive(false);
        GoPanel.SetActive(true);
        ScoreTxt.text = score +  " / " + totalQuestion;
    }

    public void wrong()
    {
        QnA.RemoveAt(currentQuestion);
        StartCoroutine(WaitForNext());
    }

    public void correct()
    {
        score += 1;
        QnA.RemoveAt(currentQuestion);
        StartCoroutine(WaitForNext());
    }

    IEnumerator WaitForNext()
    {
        yield return new WaitForSeconds(1);
        generateQuestion();
    }

    void setAnswers()
    {
        for (int i = 0; i < options.Length; i++)
        {
            options[i].GetComponent<AnswerScript>().isCorrect = false;
            options[i].transform.GetChild(0).GetComponent<Image>().sprite = QnA[currentQuestion].Answers[i];
            options[i].GetComponent<Image>().color = options[i].GetComponent<AnswerScript>().startColor;
            if (QnA[currentQuestion].CorrectAnswer == i+1)
            {
                options[i].GetComponent<AnswerScript>().isCorrect = true;
            }

           
        }
    }

    void generateQuestion()
    {
        if (QnA.Count > 0)
        {
            currentQuestion = Random.Range(0, QnA.Count);

         QuestionImage.sprite = QnA[currentQuestion].Question;
            setAnswers();
        }
        else
        {
            Debug.Log("Out of Questions");
            GameOver();
        }
        
    }
        
}

--------问答脚本------------

using UnityEngine;


[System.Serializable]
public class QuestionandAnswer 
{
     public Sprite Question;
      public Sprite[] Answers;
      public int CorrectAnswer;

   /* public sprite Question;
    public Sprite[] Answers;
    public int CorrectAnswer;*/


}

-------答案脚本--------

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class AnswerScript : MonoBehaviour
{
    public bool isCorrect = false;
    public QuizManager quizManager;

    public Color startColor;

    private void Start()
    {
        startColor = GetComponent<Image>().color;
    }
    
    public void Answer()
    {
        if(isCorrect)
        {
            GetComponent<Image>().color = Color.green;
            Debug.Log("Correct Answer");
            quizManager.correct();
        }
        else
        {
            GetComponent<Image>().color = Color.red;
            Debug.Log("Wrong Answer");
            quizManager.wrong();
        }
    }


}

我希望将问题作为图像也像我的多个答案一样。

image unity-game-engine sprite unityscript question2answer
© www.soinside.com 2019 - 2024. All rights reserved.