- Home /
how can i show the correct/wrong panel when the question was answered correctly or not?
Hey! i am doing a quiz game with a source code from unity site/forums but my problem is if the question was answered correctly or not their panels wont show up. only the timesUPPnale and GameOverPanel shows up on triggered. well heres the gameecontroller code. Hope you would help me with this matter. I want to show the correct panel when the question showedwas answered correctly otherwise the wrong panel will show up.
using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Collections.Generic;
public class GameController : MonoBehaviour {
public Text questionDisplayText;
public Text ScoreDisplayText;
public Text TimeRemainingDisplayText;
public Text imageQuestionDisplayText;
public SimpleObjectPool answerButtonObjectPool;
public Transform answerButtonParent;
public GameObject questionDisplay;
public GameObject WrongDisplay;
public GameObject timesUpDisplay;
public GameObject GameOverDisplay;
public GameObject CorrectDisplay;
public GameObject imagePanel;
public GameObject imageQuestionDisplay;
public Image imageQuestion;
private DataController dataController;
private RoundData currentRoundData;
private QuestionData[] questionPool;
private bool isRoundActive;
private float timeRemaining;
private int questionIndex;
private int playerScore;
private int qNumber = 0;
private List <GameObject> answerButtonGameObjects = new List<GameObject> ();
private List <int> questionIndexesChosen = new List <int>();
// Use this for initialization
[SerializeField]
private float timeBetweenQuestions = 0 ;
void Start ()
{
dataController = FindObjectOfType<DataController> ();
currentRoundData = dataController.GetCurrentRoundData ();
questionPool = currentRoundData.questions;
timeRemaining = currentRoundData.timelimitInSeconds;
UpdateTimeRemaining ();
playerScore = 0;
questionIndex = 0;
ShowQuestion ();
QuestionData questionData = questionPool [questionIndex];
questionDisplayText.text = questionData.questionText;
isRoundActive = true;
}
public void ShowQuestion()
{
RemoveAnswerButtons ();
ChooseQuestion ();
QuestionData questionData = questionPool [questionIndex];
questionDisplayText.text = questionData.questionText;
if (questionDisplayText.text != null) {
questionDisplay.SetActive (true);
}
else
{
questionDisplay.SetActive (false);
}
for (int i = 0; i < questionData.answers.Length; i++)
{
GameObject answerButtonGameObject = answerButtonObjectPool.GetObject ();
answerButtonGameObject.transform.SetParent (answerButtonParent);
answerButtonGameObjects.Add (answerButtonGameObject);
AnswerButton answerButton = answerButtonGameObject.GetComponent<AnswerButton> ();
answerButton.Setup (questionData.answers [i]);
}
}
public void RemoveAnswerButtons()
{
while (answerButtonGameObjects.Count > 0)
{
answerButtonObjectPool.ReturnObject (answerButtonGameObjects[0]);
answerButtonGameObjects.RemoveAt (0);
}
}
void ChooseQuestion()
{
bool questionChosen = false;
while (questionChosen != true)
{
int random = Random.Range (0,questionPool.Length);
if (!questionIndexesChosen.Contains (random))
{
questionIndexesChosen.Add (random);
questionIndex = random;
questionChosen = true;
}
}
}
public void AnswerButtonClicked(bool isCorrect)
{
if (isCorrect) {
playerScore += currentRoundData.pointsAddedForCorrectAnswer;
ScoreDisplayText.text = "Score: " + playerScore.ToString ();
CorrectDisplay.SetActive (true);
questionDisplay.SetActive (false);
StartCoroutine (TimeBetweenQuestions ());
}
else
{
questionDisplay.SetActive (false);
WrongDisplay.SetActive (true);
StartCoroutine (TimeBetweenQuestions ());
}
if (qNumber + 1 < questionPool.Length)
{
qNumber++;
ShowQuestion ();
}
else
{
EndRound ();
}
}
public void EndRound()
{
isRoundActive = false;
questionDisplay.SetActive (false);
GameOverDisplay.SetActive (true);
StartCoroutine (TimeBetweenQuestions ());
}
public void ReturnToQuestionPanel ()
{
questionDisplay.SetActive (true);
WrongDisplay.SetActive (false);
timesUpDisplay.SetActive (false);
StartCoroutine (TimeBetweenQuestions ());
}
IEnumerator TimeBetweenQuestions()
{
yield return new WaitForSeconds (timeBetweenQuestions);
CorrectDisplay.SetActive (true);
WrongDisplay.SetActive (true);
timeRemaining = 15;
QuestionData questionData = questionPool [questionIndex];
}
private void UpdateTimeRemaining()
{
TimeRemainingDisplayText.text = "Time: " + Mathf.Round (timeRemaining).ToString ();
}
private void timesUpRound()
{
questionDisplay.SetActive (false);
timesUpDisplay.SetActive (true);
}
// Update is called once per frame
void Update () {
if (isRoundActive)
{
timeRemaining -= Time.deltaTime;
UpdateTimeRemaining ();
}
if (timeRemaining <= 0f)
{
qNumber++;
ShowQuestion ();
timeRemaining = 15;
timesUpRound ();
}
}
}
Your answer
Follow this Question
Related Questions
[Solved] How to get non repeating random positions? 5 Answers
Easy way for shuffle a non-repeatable list 0 Answers
I want to swap 5 blocks randomly on same position. 2 Answers
List woes. (C#) 1 Answer
Can I shuffle strings in XML? 0 Answers