Unity实现轻量化答题软件,随机题库,非SQL数据库加载形式

资源demo下载:
若看过代码还是一知半解,或者你就是不想打代码,那就去下载demo吧,连接奉上(support:Unity3D 2017.2.0f3):下载地址

前言:
在做中国某科大的一个生物仿真实验时,校方要求随机题库,让学生做选择题,完成巩固知识。
因考虑到项目量较小,采取了文本加载的方式实现答题功能,未采取数据库的形式。

功能说明:
可随机抽选固定数量的题目,且不重复。

Unity实现轻量化答题软件,随机题库,非SQL数据库加载形式_第1张图片
设置了两种题库加载方式,resources内部加载,和streamingAssets外部加载。
可上一题下一题,题目跳转。
题目回答错误时有提示按钮,点击可看正确答案。

Unity实现轻量化答题软件,随机题库,非SQL数据库加载形式_第2张图片
记录每一题的已选选项,回看时若正确则提示正确,回看时若错误则提示正确选项。
Unity实现轻量化答题软件,随机题库,非SQL数据库加载形式_第3张图片
计算正确率。

代码注释写的比较详细,就不一一讲解了,有问题请留言。
上代码:

/************************************************************
  FileName: AnswerQuestion.cs
  Author:Guido Kuo       Version :1.0        Date: 2019-01-18
  Description:Support Unity 2017.2
************************************************************/

using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;

namespace Assets.Scripts
{
    public class AnswerQuestion : MonoBehaviour
    {
        [Header("是否随机")]
        public bool IsRandom;
        [Header("抽取题目的数量")]
        [Range(1, 20)]
        public int TopicCount;
        /// 
        /// 题库每行的数据
        /// 
        private string[] _perLineData;
        /// 
        /// 创建二维不规则数组,因选项可能3个或4个,所以创建不规则数组
        /// 
        private string[][] _questionsArray;
        /// 
        /// 记录题目是否已经回答
        /// 
        private readonly List IsAnswer = new List();
        /// 
        /// 记录选择过的序号
        /// 
        private readonly List SelectAnswerIndex = new List();
        /// 
        /// 记录选择的是否正确
        /// 
        private readonly List SelectIsRight = new List();
        /// 
        /// 选择键
        /// 
        public List SelecToggles;
        /// 
        /// 选项
        /// 
        public List SelecAnswer;
        /// 
        /// 上一题按钮
        /// 
        private Button _beforeTopicBtn;
        /// 
        /// 下一题按钮
        /// 
        private Button _nextTopicBtn;
        /// 
        /// 错误提示按钮
        /// 
        private Button _tipsBtn;
        /// 
        /// 正确答案提示
        /// 
        private Text _tipCorrectText;
        /// 
        /// 题目序号
        /// 
        private Text _quesIndexText;
        /// 
        /// 题目内容
        /// 
        private Text _quesContent;
        /// 
        /// 正确率显示
        /// 
        private Text _accuracyText;
        /// 
        /// 第几题
        /// 
        private int _quesIndex = 0;
        /// 
        /// 题目总数量
        /// 
        private int _quesCount;
        /// 
        /// 回答正确的数量
        /// 
        private int _rightCount;
        /// 
        /// 已经大回答的题目数量
        /// 
        private int _answeredCount;
        void Awake()
        {
            _beforeTopicBtn = GameObject.Find("Canvas/BgPanel/Buttons/BeforeTopic").GetComponent

你可能感兴趣的:(Unity)