Unity单选题开发
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单选题开发相关推荐
- Unity多选题功能开发
文章目录 前言 一.场景物体 二.脚本 总结 前言 新手一直不知道该怎么做一个多选题开发模块!对于文件流又不够熟悉,就只能在场景中做题目更换和分数统计. 提示:以下是本篇文章正文内容,下面案例可供参考 ...
- 阿里云1+X-云计算开发与运维(单选题)
单选题(243题) 1.根据<互联网信息服务管理办法>以及<非经营性互联网信息服务备案管理办法>,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度. ...
- 军事武器开发使用c语言吗,【单选题】( )是军事革命的前提条件和物质基础,是军事革命的“硬件”。
A. 先进的技术和武器系统 B. 科学的体制编制 C. 创新的军事理论 D. 富有才干的领导人...
[单选题]( )是军事革命的前提条件和物质基础,是军事革命的"硬件". A. 先进的技术和武器系统 B. 科学的体制编制 C. 创新的军事理论 D. 富有才干的领导人 更多相关问题 ...
- 关于python语言的编程模式、哪个说法正确_测验1: Python基本语法元素 (第1周) 单选题+程序题...
第1章测验,共10道单选题和2道编程题,限答1次 单选题 1.Guido van Rossum正式对外发布Python版本的年份是: A.2002 B.1998 C.2008 D.1991 正确答案: ...
- 台式计算机和笔记本计算机区别,【单选题】计算机的分类方法有多种,按照计算机的性能和用途分,台式计算机和笔记本计算机属于_________。...
参考答案如下 单选的分多种[单选题]任何人只要有一个(),都可以方便而安全地使用贝宝支付进行在线发送和接收付款,避免了传统的邮寄支票或者汇款的方法.A. 护照号码 B. 邮政编号 C. 门牌号码 D. ...
- 【Unity】Unity 2D游戏开发(一)U2D基础功能
文章目录 Unity 2D游戏开发基础知识 Animation动画 SortingLayer层排序 Physics 2D物理2D Rigidbody 2D刚体 示例 1.点击鼠标发出子弹 2.子弹打中 ...
- 性是指用户可以与计算机进行人机对话操作,2016年计算机二级单选题训练题库...
2016年计算机二级单选题训练题库 离2016年3月计算机等级考试还有一周多的时间,在这个强化学习阶段,百分网小编为考生搜索整理了关于计算机二级单选题训练题库,供参考学习,希望对您都有帮助.想了解更多 ...
- Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现
Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现 一.简单介绍 二.FlyPin ...
- java基础题22:(单选题)在Java中,以下描述错误的是( )
22.(单选题)在Java中,以下描述错误的是( ) A-class是源文件 B-java是编译前的源文件 C-class是编译后的文件 D.Java程序需编译后方可运行 [正确答案]A [答案解析] ...
最新文章
- loadrunner11 linux服务器,Loadrunner怎么执行linux服务器上的shell脚本?
- windows server 2008 R2系统安装教程
- zuul 路由不生效_springBoot集成zuul路由forward,设置setSendZuulResponse无效
- var类型推断关键字
- [Qt] 利用QtWebKit完成JavaScript访问C++对象
- 【华为云技术分享】万万没想到,我在夜市地摊解决了MySQL临时表空间难题~~
- Swift 导出本地化和导入本地化
- 数据库mdf和ldf文件_如何将SQL数据库文件(MDF和LDF)移动到另一个位置
- 哈佛大学《幸福课》笔记
- OpenGL——场景设计
- API接口怎么使用(教你使用api接口获取数据)
- 服务器(工作站)与普通电脑的区别?
- oracle ocp认证指南,OCP认证考试指南(三):创建Oracle数据库
- 安利:那些让你欲罢不能的宝贝网站
- self的用法与意义(一)
- 唯品会5580万美元注资东方风行
- Java 父类的引用指向子类对象有啥用 总结
- Word中无法使用“粘贴”快捷键
- 理想服务员 --励志动漫
- realEngine(UE4)实现开关门效果
热门文章
- unsupported marjor.minor version 52.0
- 容器原理(搞懂 layerID,diffID,chainID,cache-id 是什么)
- 错误代码为 0x8002801c
- 「图片版」ps常用快捷键大全,设计师进阶之路
- [UE][UE5]找资源的网站、好用的插件、找3D模型的网站
- idea设置关键字颜色_IntelliJ IDEA如何配置颜色与字体
- 第一次做学年设计 学生成绩管理系统
- word 2021 空格处下划线不显示
- 正点原子 linux led 驱动之 设备树 + platform
- Hcip-datacom自学教程