找回密码
 立即注册
查看: 419|回复: 0

Unity中实现选择题功能以及判断正误

[复制链接]
发表于 2022-5-9 18:06 | 显示全部楼层 |阅读模式
主要内容

  • 前言介绍
  • 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
{
    [Header("考试C")]
    public List<int> correctAnswerArray;//正确答案数组
    [Tooltip("回答答案的集合父物体")]
    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[k]);
        }
        for (int k = 0; k < submitAnswerArray.Count; k++)
        {
            if (correctAnswerArray[k] == submitAnswerArray[k])
            {
                scoreC += 25;
            }
        }
        scoreShow.text = "" + scoreC;
        print("您的成绩为:" + scoreC + "分" + "\n" + "请选择其他科目进行学习!");
    }
}
将脚本添加到ScriptManager物体上,并将所需物体拖动到组件上,添加问题正确答案。



图示   JudgeOperation组件的添加

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



图示  按钮监听事件的绑定

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 12:41 , Processed in 0.119225 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表