Ilingis 发表于 2022-5-9 18:06

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 = "" + scoreC;
      print("您的成绩为:" + scoreC + "分" + "\n" + "请选择其他科目进行学习!");
    }
}
将脚本添加到ScriptManager物体上,并将所需物体拖动到组件上,添加问题正确答案。



图示   JudgeOperation组件的添加

将JudgeOperation中的GetAnswerC( )方法注册到“提交”按钮上,即可。



图示按钮监听事件的绑定
页: [1]
查看完整版本: Unity中实现选择题功能以及判断正误