Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by $$anonymous$$ · Oct 11, 2017 at 10:57 AM · c#randomquiz

How to make questions random, and include from a folder not inside the unity editor

So I have followed the Unity quiz Game Tutorial and would want to further improve the game. I have wondered how do you make the question in random not in the same order. Also, I would like the questions to be loaded not made inside the Unity Editor.

This is the QuestionData script [System.Serializable] public class AdditionQuestionData { public string questionText; public AdditionAnswerData[] answers; }

And this is the Game Controller using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Collections.Generic;

public class AdditionGameController : MonoBehaviour { public AdditionSimpleObjectPool answerButtonObjectPool; public Text questionText; public Text scoreDisplay; public Text timeRemainingDisplay; public Transform answerButtonParent;

 public GameObject questionDisplay;
 public GameObject roundEndDisplay;
 public Text highScoreDisplay;

 private AdditionDataController dataController;
 private AdditionRoundData currentRoundData;
 private AdditionQuestionData[] questionPool;

 private bool isRoundActive = false;
 private float timeRemaining;
 private int playerScore;
 private int questionIndex;
 private List<GameObject> answerButtonGameObjects = new List<GameObject>();

 void Start()
 {
     dataController = FindObjectOfType<AdditionDataController>();                                // Store a reference to the DataController so we can request the data we need for this round

     currentRoundData = dataController.GetCurrentRoundData();                            // Ask the DataController for the data for the current round. At the moment, we only have one round - but we could extend this
     questionPool = currentRoundData.questions;                                            // Take a copy of the questions so we could shuffle the pool or drop questions from it without affecting the original RoundData object

     timeRemaining = currentRoundData.timeLimitInSeconds;                                // Set the time limit for this round based on the RoundData object
     UpdateTimeRemainingDisplay();
     playerScore = 0;
     questionIndex = 0;

     ShowQuestion();
     isRoundActive = true;
 }

 void Update()
 {
     if (isRoundActive)
     {
         timeRemaining -= Time.deltaTime;                                                // If the round is active, subtract the time since Update() was last called from timeRemaining
         UpdateTimeRemainingDisplay();

         if (timeRemaining <= 0f)                                                        // If timeRemaining is 0 or less, the round ends
         {
             EndRound();
         }
     }
 }

 void ShowQuestion()
 {
     RemoveAnswerButtons();

     AdditionQuestionData questionData = questionPool[questionIndex];                            // Get the QuestionData for the current question
     questionText.text = questionData.questionText;                                        // Update questionText with the correct text

     for (int i = 0; i < questionData.answers.Length; i ++)                                // For every AnswerData in the current QuestionData...
     {
         GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();            // Spawn an AnswerButton from the object pool
         answerButtonGameObjects.Add(answerButtonGameObject);
         answerButtonGameObject.transform.SetParent(answerButtonParent);
         answerButtonGameObject.transform.localScale = Vector3.one;

         AdditionAnswerButton answerButton = answerButtonGameObject.GetComponent<AdditionAnswerButton>();
         answerButton.SetUp(questionData.answers[i]);                                    // Pass the AnswerData to the AnswerButton so the AnswerButton knows what text to display and whether it is the correct answer
     }
 }

 void RemoveAnswerButtons()
 {
     while (answerButtonGameObjects.Count > 0)                                            // Return all spawned AnswerButtons to the object pool
     {
         answerButtonObjectPool.ReturnObject(answerButtonGameObjects[0]);
         answerButtonGameObjects.RemoveAt(0);
     }
 }

 public void AnswerButtonClicked(bool isCorrect)
 {
     if (isCorrect)
     {
         playerScore += currentRoundData.pointsAddedForCorrectAnswer;                    // If the AnswerButton that was clicked was the correct answer, add points
         scoreDisplay.text = playerScore.ToString();
     }

     if(questionPool.Length > questionIndex + 1)                                            // If there are more questions, show the next question
     {
         questionIndex++;
         ShowQuestion();
     }
     else                                                                                // If there are no more questions, the round ends
     {
         EndRound();
     }
 }

 private void UpdateTimeRemainingDisplay()
 {
     timeRemainingDisplay.text = Mathf.Round(timeRemaining).ToString();
 }

 public void EndRound()
 {
     isRoundActive = false;

     questionDisplay.SetActive(false);
     roundEndDisplay.SetActive(true);
 }

 public void ReturnToMenu()
 {
     SceneManager.LoadScene("MenuScreen");
 }

}

Help please :) Thanks!!

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

450 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How do I get random answers? 2 Answers

having a problem with object pooling. 1 Answer

How can I make some questions worth more points? 1 Answer

I can't add \n to string 1 Answer

how to create a random with probability ? 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges