Unity中实现选择题功能以及判断正误
主要内容[*]前言介绍
[*]Unity中简单界面搭建
[*]代码实现(JudgeOperation脚本)
前言介绍
图示运行结果
主要功能:在Unity中实现选择题功能以及判断正误。
思路:建立两个列表,一个存储每道题正确答案的索引(1,2,3,4),另一个添加每道题的四个选项子物体中的Toggle组件上Ison=true的子物体索引值,并将索引值加一(1,2,3,4),如果没有Ison=true的子物体,则添加0索引。当点击提交按钮后,遍历对比两个列表的索引值,正确就加一定的分值,最后输出分值。
Unity中简单界面搭建
图示界面的搭建
在Canvas中,添加Scroll View元素,在Content下添加题目。每道题目由Option(包括四个Toggle问题选项)与Subject题目组成。为了排列整齐可以为Content物体添加Vertical Layout Group组件,并设置好合适的参数。
图示组件的添加与设置
代码实现(JudgeOperation脚本)
JudgeOperation脚本
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class JudgeOperation : MonoBehaviour
{
public List<int> correctAnswerArray;//正确答案数组
public Transform submitAnswerParent;
public Text scoreShow;
List<int> submitAnswerArray = new List<int>();//回答的答案数组
int scoreC = 0;//初始化分值
public void GetAnswerC()//获取答案并研判考试C,输出成绩
{
for (int i = 0; i < submitAnswerParent.childCount; i++)//计算成绩 Count物体:submitAnswerParent
{
Transform firstLayer = submitAnswerParent.GetChild(i);//得到第一层物体 每一题物体:One....
Transform secondLayer = firstLayer.GetChild(0);//得到第二层物体
bool isOn = false;
for (int k = 0; k < secondLayer.childCount; k++) //遍历每题四个选项
{
if (secondLayer.GetChild(k).GetComponent<Toggle>().isOn == true)
{
submitAnswerArray.Add(k + 1);
isOn = true;
break;
}
}
if (!isOn)
{
submitAnswerArray.Add(0);
}
}
for (int k = 0; k < submitAnswerArray.Count; k++)
{
print(submitAnswerArray);
}
for (int k = 0; k < submitAnswerArray.Count; k++)
{
if (correctAnswerArray == submitAnswerArray)
{
scoreC += 25;
}
}
scoreShow.text = &#34;&#34; + scoreC;
print(&#34;您的成绩为:&#34; + scoreC + &#34;分&#34; + &#34;\n&#34; + &#34;请选择其他科目进行学习!&#34;);
}
}
将脚本添加到ScriptManager物体上,并将所需物体拖动到组件上,添加问题正确答案。
图示 JudgeOperation组件的添加
将JudgeOperation中的GetAnswerC( )方法注册到“提交”按钮上,即可。
图示按钮监听事件的绑定
页:
[1]