Unity简单单选题模块开发

  • 第一步
  • 第二步
  • 第三步
  • 第四步
  • 第五步
  • 第六步
  • 第七步

第一步

在Canvas下创建一个空物体(Dati_Single),用来挂脚本

第二步

在Dati_Single创建一个答题板背景图片(Img_DatiBackground)和一个下一题按钮(btn_Next)

第三步

在答题板背景图片(Img_DatiBackgroud)下创建好你需要的所有题目和对应选项——这里也可以用预制体实例化题目,但笔者就直接创建多个物体了。

第四步

这里注意选项名字末尾需要用数字递增答题,这样十分后面代码获取选项更方便!下面就是脚本了!首先创建一个答题控制脚本(DatiController)并挂到第一步中的空物体(Dati_Single)上,假设答对得五分

    ///答题总分int score = 0;///下一题按钮public Button btn_Next;///需要显示题目的索引public int currentTimuIndex = 0;///题目集合public List<Transform> timus;///答案集合public List<string> ans;///配对答案字典///答案配对——选中的选项的名称==ansDic[timus[currentTimuIndex]]///就是选出来的toggle通过获取其名字与当前题号对应的字典中的值是否匹对(但在这之前先要判定主键是否存在)public Dictionary<Transform, string> ansDic;//初始化操作private void Init(){btn_Next = transform.Find("btn_Next").GetComponent<Button>();btn_Next.onClick.AddListener(OnNextBtnClick);timus = new List<Transform>();for (int i = 0; i < transform.Find("Img_DatiBackground").childCount; i++)//列表元素个数等于这个物体的子物体数{timus.Add(transform.Find("Img_DatiBackground/Timu" + (i + 1)));//添加其下所有子物体到列表中}{//答案列表赋值ans = new List<string>();ans.Add("Sele_1");ans.Add("Sele_1");ans.Add("Sele_3");}//题目、答案进行字典配对ansDic = new Dictionary<Transform, string>();for (int i = 0; i < transform.Find("Img_DatiBackground").childCount; i++){ansDic.Add(timus[i], ans[i]);}//默认激活第一道题timus[0].gameObject.SetActive(true);}

第五步

我们需要对下一题按钮进行事件注册,并且还需要两个方法——一个获取当前显示的题目的所有选项,另一个判断答题的正确性并进行分数统计!

 private void OnNextBtnClick(){//获取当前显示题目的选项//计算分数//切换题目}/// <summary>/// 哪个被勾选,然后通过题目列表的序号对应勾选的toggle名字进行匹对,匹配即正确/// </summary>/// <returns></returns>private Toggle[] GetCurrentTimuToggle(){//返回获取到的当前题目的所有选项————这里也可以改用列表}/// <summary>/// 分数处理及得分计算/// </summary>/// <returns></returns>private int CalculateScore(){//计算分数并返回}

第六步

上面三个代码具体实现

    private void OnNextBtnClick(){//初始化当前题目的所有选项GetCurrentTimuToggle();//在加载下一题之前进行分数计算Debug.Log(CalculateScore());//题号索引自增currentTimuIndex++;//当前题目编号对题目总数取余int showIndex = currentTimuIndex % timus.Count;if (currentTimuIndex>=timus.Count){btn_Next.enabled = false;Debug.Log("答题结束");}if (currentTimuIndex > transform.Find("Img_DatiBackground").childCount - 1) return;try{timus[currentTimuIndex - 1].gameObject.SetActive(false);timus[currentTimuIndex].gameObject.SetActive(true);}catch (System.IndexOutOfRangeException){Debug.Log("数组越界");}}/// <summary>/// 哪个被勾选,然后通过题目列表的序号对应勾选的toggle名字进行匹对,匹配即正确/// </summary>/// <returns></returns>public Toggle[] GetCurrentTimuToggle(){Toggle[] selections = new Toggle[4];if (currentTimuIndex > timus.Count-1) return null;Transform toggleGroup = timus[currentTimuIndex].Find("ToggleGroup").GetComponent<Transform>();for (int i = 0; i < toggleGroup.childCount; i++){selections[i] = toggleGroup.Find("Sele_" + (i+1)).GetComponent<Toggle>();}return selections;}/// <summary>/// 分数处理及得分计算/// </summary>/// <returns></returns>private int CalculateScore(){if (GetCurrentTimuToggle() == null) return score;foreach (var item in GetCurrentTimuToggle()){if (item!=null){if (item.isOn){string seleName = item.name;if (ansDic.ContainsKey(timus[currentTimuIndex])){if (ansDic.TryGetValue(timus[currentTimuIndex], out string ans)){score=(seleName==ans ? score += 5 : score += 0);}}}}}return score;}

第七步

上效果图
下面答对分数就+5,答错不加分

转载注明出处:https://blog.csdn.net/weixin_44870508/article/details/110225276

!!!!另还待进一步完善!!!!!

2021.11.26答题功能最新版本:https://blog.csdn.net/weixin_44870508/article/details/121562464

Unity单选题开发相关推荐

  1. Unity多选题功能开发

    文章目录 前言 一.场景物体 二.脚本 总结 前言 新手一直不知道该怎么做一个多选题开发模块!对于文件流又不够熟悉,就只能在场景中做题目更换和分数统计. 提示:以下是本篇文章正文内容,下面案例可供参考 ...

  2. 阿里云1+X-云计算开发与运维(单选题)

    单选题(243题) 1.根据<互联网信息服务管理办法>以及<非经营性互联网信息服务备案管理办法>,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度. ...

  3. 军事武器开发使用c语言吗,【单选题】( )是军事革命的前提条件和物质基础,是军事革命的“硬件”。 A. 先进的技术和武器系统 B. 科学的体制编制 C. 创新的军事理论 D. 富有才干的领导人...

    [单选题]( )是军事革命的前提条件和物质基础,是军事革命的"硬件". A. 先进的技术和武器系统 B. 科学的体制编制 C. 创新的军事理论 D. 富有才干的领导人 更多相关问题 ...

  4. 关于python语言的编程模式、哪个说法正确_测验1: Python基本语法元素 (第1周) 单选题+程序题...

    第1章测验,共10道单选题和2道编程题,限答1次 单选题 1.Guido van Rossum正式对外发布Python版本的年份是: A.2002 B.1998 C.2008 D.1991 正确答案: ...

  5. 台式计算机和笔记本计算机区别,【单选题】计算机的分类方法有多种,按照计算机的性能和用途分,台式计算机和笔记本计算机属于_________。...

    参考答案如下 单选的分多种[单选题]任何人只要有一个(),都可以方便而安全地使用贝宝支付进行在线发送和接收付款,避免了传统的邮寄支票或者汇款的方法.A. 护照号码 B. 邮政编号 C. 门牌号码 D. ...

  6. 【Unity】Unity 2D游戏开发(一)U2D基础功能

    文章目录 Unity 2D游戏开发基础知识 Animation动画 SortingLayer层排序 Physics 2D物理2D Rigidbody 2D刚体 示例 1.点击鼠标发出子弹 2.子弹打中 ...

  7. 性是指用户可以与计算机进行人机对话操作,2016年计算机二级单选题训练题库...

    2016年计算机二级单选题训练题库 离2016年3月计算机等级考试还有一周多的时间,在这个强化学习阶段,百分网小编为考生搜索整理了关于计算机二级单选题训练题库,供参考学习,希望对您都有帮助.想了解更多 ...

  8. Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现 一.简单介绍 二.FlyPin ...

  9. java基础题22:(单选题)在Java中,以下描述错误的是( )

    22.(单选题)在Java中,以下描述错误的是( ) A-class是源文件 B-java是编译前的源文件 C-class是编译后的文件 D.Java程序需编译后方可运行 [正确答案]A [答案解析] ...

最新文章

  1. loadrunner11 linux服务器,Loadrunner怎么执行linux服务器上的shell脚本?
  2. windows server 2008 R2系统安装教程
  3. zuul 路由不生效_springBoot集成zuul路由forward,设置setSendZuulResponse无效
  4. var类型推断关键字
  5. [Qt] 利用QtWebKit完成JavaScript访问C++对象
  6. 【华为云技术分享】万万没想到,我在夜市地摊解决了MySQL临时表空间难题~~
  7. Swift 导出本地化和导入本地化
  8. 数据库mdf和ldf文件_如何将SQL数据库文件(MDF和LDF)移动到另一个位置
  9. 哈佛大学《幸福课》笔记
  10. OpenGL——场景设计
  11. API接口怎么使用(教你使用api接口获取数据)
  12. 服务器(工作站)与普通电脑的区别?
  13. oracle ocp认证指南,OCP认证考试指南(三):创建Oracle数据库
  14. 安利:那些让你欲罢不能的宝贝网站
  15. self的用法与意义(一)
  16. 唯品会5580万美元注资东方风行
  17. Java 父类的引用指向子类对象有啥用 总结
  18. Word中无法使用“粘贴”快捷键
  19. 理想服务员 --励志动漫
  20. realEngine(UE4)实现开关门效果

热门文章

  1. unsupported marjor.minor version 52.0
  2. 容器原理(搞懂 layerID,diffID,chainID,cache-id 是什么)
  3. 错误代码为 0x8002801c
  4. 「图片版」ps常用快捷键大全,设计师进阶之路
  5. [UE][UE5]找资源的网站、好用的插件、找3D模型的网站
  6. idea设置关键字颜色_IntelliJ IDEA如何配置颜色与字体
  7. 第一次做学年设计 学生成绩管理系统
  8. word 2021 空格处下划线不显示
  9. 正点原子 linux led 驱动之 设备树 + platform
  10. Hcip-datacom自学教程