Unity制作一套自定义选择题试卷

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;
	}
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>