Unity制作一套自定義選擇題試卷
如果想要實作一套自定義的試卷題目,可以參照我的這個demo,
下圖結構很簡單,first是第一題顯示頁面,second是第二題頁面,UIcanvas添加UImanager腳本,

運行如圖,選擇答案進行下一題,

這是UImanager代碼 ,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UImanager : MonoBehaviour
{
private static UImanager instance;
public static UImanager Instance
{
get
{
if (instance == null)
{
instance = new UImanager();
}
return instance;
}
}
GameObject Fisrt;
GameObject Second;
List<GameObject> AllOptions = new List<GameObject>();
int Option = 0;
// Use this for initialization
private void Awake()
{
instance = this;
}
void Start()
{
Init();
}
void Init()
{
Fisrt = transform.Find("First").gameObject;
Fisrt.AddComponent<RandomOptions>();
AllOptions.Add(Fisrt);
Second = transform.Find("Second").gameObject;
Second.AddComponent<RandomOptions>();
AllOptions.Add(Second);
}
public void SetOptions(string name )
{
if (name == "Text_A")Debug.Log("您答對了");
else Debug.Log("您答錯了");
AllOptions[Option].SetActive(false);
Option += 1;
if (Option < AllOptions.Count)
{
AllOptions[Option].SetActive(true);
}
}
}
這個是RandomOptions 代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class RandomOptions : MonoBehaviour
{
Transform Options;
List<int> list = new List<int>();
List<Transform> OptionsTrans = new List<Transform>();
List<Vector3> OptionsStartTrans = new List<Vector3>();
int number;
private void Start()
{
Init();
}
void Init()
{
list.Clear();
OptionsTrans.Clear();
OptionsStartTrans.Clear();
Options = transform.Find("Options").transform;
foreach (Transform item in Options)
{
OptionsTrans.Add(item);
}
for (int i = 0; i < OptionsTrans.Count; i++)
{
OptionsStartTrans.Add(OptionsTrans[i].position);
OptionsTrans[i].GetComponent<Button>().onClick.AddListener(() =>
{
UImanager.Instance.SetOptions(UnityEngine.EventSystems.EventSystem.current.currentSelectedGameObject.name);
});
}
for (int i = 0; i < OptionsStartTrans.Count; i++)
{
number = RandomNumber(0, Options.childCount);
OptionsTrans[i].position = OptionsStartTrans[number];
string str = OptionsTrans[i].GetComponent<Text>().text;
string[] b = str.Split('.');
switch (number)
{
case 0:
OptionsTrans[i].GetComponent<Text>().text = "A." + b[1];
break;
case 1:
OptionsTrans[i].GetComponent<Text>().text = "B." + b[1];
break;
case 2:
OptionsTrans[i].GetComponent<Text>().text = "C." + b[1];
break;
case 3:
OptionsTrans[i].GetComponent<Text>().text = "D." + b[1];
break;
case 4:
OptionsTrans[i].GetComponent<Text>().text = "E." + b[1];
break;
case 5:
OptionsTrans[i].GetComponent<Text>().text = "F." + b[1];
break;
case 6:
OptionsTrans[i].GetComponent<Text>().text = "G." + b[1];
break;
}
}
}
int RandomNumber(int min, int max)
{
int random = Random.Range(min, max);
while (true)
{
if (!list.Contains(random))
{
list.Add(random);
break;
}
else
{
random = Random.Range(min, max);
if (list.Count >= max)
{
break;
}
}
}
return random;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/386731.html
標籤:其他
上一篇:飛船打外星人(python)
下一篇:練習-聊天機器人
