Objects instantiation moved to script
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEngine;
|
||||
@@ -7,7 +6,11 @@ using UnityEngine.UI;
|
||||
|
||||
public class QuizController : MonoBehaviour {
|
||||
|
||||
public GameObject[] answers;
|
||||
// References to answers
|
||||
private List<GameObject> answers;
|
||||
|
||||
// References to answers halo prefabs
|
||||
private List<GameObject> answersHaloEffects;
|
||||
|
||||
public Text counterText;
|
||||
|
||||
@@ -17,7 +20,9 @@ public class QuizController : MonoBehaviour {
|
||||
|
||||
public Button btnNextQuestion;
|
||||
|
||||
public GameObject haloPrefab;
|
||||
public GameObject haloEffect;
|
||||
|
||||
public GameObject[] answerModels;
|
||||
|
||||
private int scoreValue = 0;
|
||||
|
||||
@@ -44,35 +49,95 @@ public class QuizController : MonoBehaviour {
|
||||
// List of selected answers
|
||||
private List<int> selectedAnswers;
|
||||
|
||||
// References to answers halo prefabs
|
||||
private List<GameObject> answersHaloPrefabs;
|
||||
|
||||
// List of questions and correct answers
|
||||
List<Question> questions = new List<Question>() {
|
||||
new Question("1. Neki od ovih prozora imaju 2-3 puta manje toplotnih gubitaka za razliku od drugih, koji su to?", new int[] {1, 4}),
|
||||
new Question("2. Na jedan od načina možete uštedjeti i do 10 litara vode po osobi dnevno, uz koji predmet?", new int[] {3, 4}),
|
||||
new Question("3. Korištenjem jednog od sljedećih predmeta, u svjetlost se pretvara svega 5% uložene energije, dok se ostatak pretvara u toplotu, koji je to?", new int[] {1}),
|
||||
new Question("4. Neki od navedenih predmeta uključeni u utičnicu, iako nisu u u funkciji, i dalje se znatno griju i troše električnu energiju.", new int[] {3}),
|
||||
new Question("5. Šta možemo ugraditi na radijatore da nam pomogne smanjiti troškove grijanja za 7-15%?", new int[] {1, 3}),
|
||||
new Question("6. Ako je vani temperatura 33oC, koja je optimalna temperatura u kući? ", new int[] {4}),
|
||||
new Question("7. Kakvim načinom pranja posuđa, i uz koji uređaj od navedenih, trošimo 60% manje električne energije i do 85% manje vode?", new int[] {2, 3}),
|
||||
new Question("8. Koji uređaj u «stand by» načinu rada troši i do 24% energije u odnosu na potrošnju energije kada je upaljen?", new int[] {4}),
|
||||
new Question("9. Jednom godišnje stručna osoba treba provjeriti prohodnost čega? Loša prohodnost doprinosi većoj potrošnji energije za grijanje.", new int[] {1}),
|
||||
new Question("10. Uvijek odaberite program s najnižom temperaturom vode koji još uvijek obezbjeđuje dobar kvalitet pranja, za šta od navedenog? ", new int[] {1, 4}),
|
||||
new Question("1. Neki od ovih prozora imaju 2-3 puta manje toplotnih gubitaka za razliku od drugih, koji su to?", new int[] {1, 4},
|
||||
new Answer[] {
|
||||
new Answer(AnswerObjectModel.NOVI_PROZOR, "Novi prozor"),
|
||||
new Answer(AnswerObjectModel.STARI_PROZOR, "Stari prozor"),
|
||||
new Answer(AnswerObjectModel.SLOMLJENI_PROZOR, "Slomljeni prozor"),
|
||||
new Answer(AnswerObjectModel.PROZOR_SA_ROLETNOM, "Prozor sa roletnom")}),
|
||||
new Question("2. Na jedan od načina možete uštedjeti i do 10 litara vode po osobi dnevno, uz koji predmet?", new int[] {3, 4},
|
||||
new Answer[] {
|
||||
new Answer(AnswerObjectModel.UPALJENA_CESMA, "Upaljena česma"),
|
||||
new Answer(AnswerObjectModel.PROZOR_SA_ROLETNOM, "Spuštene roletne"),
|
||||
new Answer(AnswerObjectModel.UGASENA_CESMA, "Ugašena česma"),
|
||||
new Answer(AnswerObjectModel.PROFESOR_ATOM_10, "Profesor Atom +10")}),
|
||||
new Question("3. Korištenjem jednog od sljedećih predmeta, u svjetlost se pretvara svega 5% uložene energije, dok se ostatak pretvara u toplotu, koji je to?", new int[] {1},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.ZARNA_SIJALICA, "Žarne sijalice"),
|
||||
new Answer(AnswerObjectModel.BICIKLO, "Biciklo"),
|
||||
new Answer(AnswerObjectModel.VENTILATOR, "Ventilator"),
|
||||
new Answer(AnswerObjectModel.KANTA_ZA_RECIKLIRANJE, "Kanta za recikliranje")}),
|
||||
new Question("4. Neki od navedenih predmeta uključeni u utičnicu, iako nisu u u funkciji, i dalje se znatno griju i troše električnu energiju.", new int[] {3},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.NOVI_PROZOR, "Prozor"),
|
||||
new Answer(AnswerObjectModel.KLIMA, "Klima"),
|
||||
new Answer(AnswerObjectModel.ADAPTER, "Adapter"),
|
||||
new Answer(AnswerObjectModel.MASINA_ZA_VES, "Veš mašina")}),
|
||||
new Question("5. Šta možemo ugraditi na radijatore da nam pomogne smanjiti troškove grijanja za 7-15%?", new int[] {1, 3},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.TERMOSTAT_25, "Termostat"),
|
||||
new Answer(AnswerObjectModel.PREKIDAC_ZA_SVJETLO, "Prekidač za svjetlo"),
|
||||
new Answer(AnswerObjectModel.PROFESOR_ATOM_10, "Profesor Atom +10"),
|
||||
new Answer(AnswerObjectModel.ADAPTER, "Adapter")}),
|
||||
new Question("6. Ako je vani temperatura 33oC, koja je optimalna temperatura u kući? ", new int[] {4},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.KUCICA_17, "Kućica 17oC"),
|
||||
new Answer(AnswerObjectModel.KUCICA_22, "Kućica 22oC"),
|
||||
new Answer(AnswerObjectModel.KUCICA_33, "Kućica 33oC"),
|
||||
new Answer(AnswerObjectModel.KUCICA_26, "Kućica 26oC")}),
|
||||
new Question("7. Kakvim načinom pranja posuđa, i uz koji uređaj od navedenih, trošimo 60% manje električne energije i do 85% manje vode?", new int[] {2, 3},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.RUCNO_PRANJE_SUDJA, "Ručno pranje suđa"),
|
||||
new Answer(AnswerObjectModel.MASINA_ZA_SUDJE, "Pranje u mašini za suđe"),
|
||||
new Answer(AnswerObjectModel.PROFESOR_ATOM_10, "Profesor Atom +10"),
|
||||
new Answer(AnswerObjectModel.STRIK, "Štrik")}),
|
||||
new Question("8. Koji uređaj u «stand by» načinu rada troši i do 24% energije u odnosu na potrošnju energije kada je upaljen?", new int[] {4},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.RADIJATOR, "Radijator"),
|
||||
new Answer(AnswerObjectModel.VENTILATOR, "Ventilator"),
|
||||
new Answer(AnswerObjectModel.BICIKLO, "Biciklo"),
|
||||
new Answer(AnswerObjectModel.TELEVIZOR, "Televizor")}),
|
||||
new Question("9. Jednom godišnje stručna osoba treba provjeriti prohodnost čega? Loša prohodnost doprinosi većoj potrošnji energije za grijanje.", new int[] {1},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.DIMNJAK, "Dimnjak"),
|
||||
new Answer(AnswerObjectModel.AUTO, "Auto"),
|
||||
new Answer(AnswerObjectModel.NOVI_PROZOR, "Prozor"),
|
||||
new Answer(AnswerObjectModel.UPALJENA_CESMA, "Česma sa vodom")}),
|
||||
new Question("10. Uvijek odaberite program s najnižom temperaturom vode koji još uvijek obezbjeđuje dobar kvalitet pranja, za šta od navedenog? ", new int[] {1, 4},
|
||||
new Answer[]{
|
||||
new Answer(AnswerObjectModel.PROFESOR_ATOM_10, "Profesor Atom +10"),
|
||||
new Answer(AnswerObjectModel.STRIK, "Štrik"),
|
||||
new Answer(AnswerObjectModel.RUCNO_PRANJE_VESA, "Pranje na ruke"),
|
||||
new Answer(AnswerObjectModel.MASINA_ZA_VES, "Mašina za veš")})
|
||||
};
|
||||
|
||||
// Positions for answers 1, 2, 3 and 4
|
||||
private Vector3[] answerPositions = new Vector3[]
|
||||
{
|
||||
new Vector3(-10, 10, -5),
|
||||
new Vector3(-10, 5, -7),
|
||||
new Vector3(10, 5, -7),
|
||||
new Vector3(10, 10, -5)
|
||||
};
|
||||
|
||||
private Vector3 answerScale = new Vector3(0.15f, 0.15f, 0.15f);
|
||||
|
||||
/// <summary>
|
||||
/// Use this for initialization
|
||||
/// </summary>
|
||||
void Start () {
|
||||
selectedAnswers = new List<int>();
|
||||
answersHaloPrefabs = new List<GameObject>();
|
||||
answersHaloEffects = new List<GameObject>();
|
||||
answers = new List<GameObject>();
|
||||
counterValue = counterInitialValue;
|
||||
InstantiateAnswers();
|
||||
InstantiateHaloPrefabs();
|
||||
UpdateScene();
|
||||
UpdateCounter();
|
||||
UpdateScore();
|
||||
btnNextQuestion.GetComponent<Button>().onClick.AddListener(LoadNextQuestion);
|
||||
InstantiateHaloPrefabs();
|
||||
}
|
||||
|
||||
|
||||
@@ -130,6 +195,54 @@ public class QuizController : MonoBehaviour {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds Halo prefabs to all answers
|
||||
/// </summary>
|
||||
private void InstantiateHaloPrefabs()
|
||||
{
|
||||
for (int i = 0; i < answers.Count(); i++)
|
||||
{
|
||||
GameObject answerPrefab = Instantiate(haloEffect) as GameObject;
|
||||
answerPrefab.SetActive(false);
|
||||
answerPrefab.transform.SetParent(answers[i].transform, false);
|
||||
answersHaloEffects.Add(answerPrefab);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Instantiates all answer objects
|
||||
/// </summary>
|
||||
private void InstantiateAnswers()
|
||||
{
|
||||
for(int qIdx = 0; qIdx < questions.Count; ++qIdx)
|
||||
{
|
||||
for(int ansIdx = 0; ansIdx < numberOfAnswers; ++ansIdx)
|
||||
{
|
||||
Answer ans = questions[qIdx].getPossibleAnswers()[ansIdx];
|
||||
string answerName = "Answer" + (qIdx * numberOfAnswers + ansIdx + 1).ToString();
|
||||
InstantiateAnswerObject(answerName, ansIdx, ans.getAnswerModel(), ans.getAnswerCaption());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Instantiates answer object according to its type and sets its transform
|
||||
/// </summary>
|
||||
/// <param name="answerName"></param>
|
||||
/// <param name="answerIdx"></param>
|
||||
/// <param name="model"></param>
|
||||
/// <param name="answerCaption"></param>
|
||||
private void InstantiateAnswerObject(string answerName, int answerIdx, AnswerObjectModel model, string answerCaption)
|
||||
{
|
||||
GameObject answerGameObject = Instantiate(answerModels[(int)model]) as GameObject;
|
||||
answerGameObject.SetActive(true);
|
||||
answerGameObject.name = answerName;
|
||||
answerGameObject.transform.position = answerPositions[answerIdx];
|
||||
answerGameObject.transform.localScale = answerScale;
|
||||
answerGameObject.GetComponent<ObjectController>().modelCaption.text = answerCaption;
|
||||
answers.Add(answerGameObject);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Next question btn click event handler
|
||||
/// </summary>
|
||||
@@ -184,7 +297,7 @@ public class QuizController : MonoBehaviour {
|
||||
// Set new question
|
||||
questionText.text = questions[questionIdx].getQuestionText();
|
||||
// Set answers for selected question
|
||||
for(int i = 0; i < answers.Length; i++)
|
||||
for(int i = 0; i < answers.Count; i++)
|
||||
{
|
||||
if (i >= numberOfAnswers * questionIdx && i < numberOfAnswers * (questionIdx + 1))
|
||||
{
|
||||
@@ -218,20 +331,6 @@ public class QuizController : MonoBehaviour {
|
||||
answers[idx].GetComponent<ObjectController>().imageIncorrect.enabled = !isCorrect;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds Halo prefabs to all answers
|
||||
/// </summary>
|
||||
private void InstantiateHaloPrefabs()
|
||||
{
|
||||
for(int i = 0; i < answers.Count(); i++)
|
||||
{
|
||||
GameObject answerPrefab = Instantiate(haloPrefab) as GameObject;
|
||||
answerPrefab.SetActive(false);
|
||||
answerPrefab.transform.SetParent(answers[i].transform, false);
|
||||
answersHaloPrefabs.Add(answerPrefab);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clears glow from all currently shown answers
|
||||
/// </summary>
|
||||
@@ -240,7 +339,7 @@ public class QuizController : MonoBehaviour {
|
||||
for (int i = 0; i < numberOfAnswers; i++)
|
||||
{
|
||||
int prefabIdx = questionIdx * numberOfAnswers + i;
|
||||
answersHaloPrefabs[prefabIdx].SetActive(false);
|
||||
answersHaloEffects[prefabIdx].SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +349,7 @@ public class QuizController : MonoBehaviour {
|
||||
/// <param name="prefabIdx"></param>
|
||||
private void SetGlowEffect(int prefabIdx, bool showGlowEffect)
|
||||
{
|
||||
answersHaloPrefabs[prefabIdx - 1].SetActive(showGlowEffect);
|
||||
answersHaloEffects[prefabIdx - 1].SetActive(showGlowEffect);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user