VR开发-按钮实现答题篇
2023-09-27 14:27:29 时间
一、按钮实现答题功能
1、导入pico的SDK,建立一个Canvas,用作存放所有题目的面板,设置如图两处:①修改Canvas的空间和事件相机②挂上PICO的SDK中的UI交互脚本
在后面创建的每一个题目的Canvas将自动继承父亲Canvas的脚本,所以字Canvas上面都不需要做出这两项改变了
2、创建题目的Canvas,挂上脚本组件和Image(存放题目图片)组件
代码脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AnswerManager : MonoBehaviour
{
public GameObject CorrectShow;//存放下一个按钮
public int RightKey; //正确答案下标
public List<Button> KeyButtons; //答案集合
public static bool answerEnd = false;//修改:答题结束标志
public GameObject endButton; //结束观看按钮
void Start()
{
AddAnswer();//增加绑定此题的三个按钮的按钮函数
}
//答题选择
public void SelectEvent(int index)
{
if (RightKey == index) //答对事件
{
//不需要显示图片KeyButtons[index].transform.parent.GetComponent<Image>().enabled = false;//按钮图片消失
StartCoroutine(Answer());
}
else //答错事件
{
KeyButtons[index].onClick.RemoveAllListeners(); //移除所按按钮的按钮函数
StartCoroutine(Answerlost(KeyButtons[index].transform.parent.gameObject, index));//然后重新添加此按钮的按钮函数
}
}
//给按钮绑定事件,第一题的第一个按钮绑定的参数为0,第二个按钮绑定为1.....
public void AddAnswer()
{
KeyButtons[0].onClick.AddListener(delegate
{
SelectEvent(0);
});
KeyButtons[1].onClick.AddListener(delegate
{
SelectEvent(1);
});
KeyButtons[2].onClick.AddListener(delegate
{
SelectEvent(2);
});
}
IEnumerator Answerlost(GameObject obj, int n)//答案ui关闭
{
yield return new WaitForSeconds(0.1f);
//重新增加按钮函数
obj.GetComponentInChildren<Button>().onClick.AddListener(delegate
{
SelectEvent(n);
});
}
IEnumerator Answer() //答对,全部消失事件
{
for (int i = 0; i < KeyButtons.Count; i++)
{
KeyButtons[i].enabled = false;//设置按钮不可见
}
yield return new WaitForSeconds(2f);
for (int i = 0; i < KeyButtons.Count; i++)//所有按钮的父物体不可见
{
KeyButtons[i].transform.parent.gameObject.SetActive(false);
}
//this.gameObject.SetActive(false);//将上面注释更改为下面
if (CorrectShow != null)//如果下一个按钮不为null,则显示
{
CorrectShow.SetActive(true);
}
else//如果没有了下一个按钮就销毁预制体,显示结束按钮
{
answerEnd = true;
this.gameObject.GetComponent<Image>().enabled = false;
yield return new WaitForSeconds(2f);
endButton.SetActive(true);
}
this.gameObject.SetActive(false);
}
}
3、题目选项组件
Image父组件上面添加Image组件,添加透明图片
Image子组件中,添加Image(存放选项的图片)组件和按钮组件,其中按钮组件改变转化的方式,选中为如图所示,增加选中和点击时的效果。
相关文章
- VRAR产业峰会暨第二届华为VR开发应用大赛颁奖典礼在和平区成功举办!
- 撬动百亿VRAR产业,让VR们“造”起来
- 第八章 交互技术,8.1 VR电商购物(作者:宋五)
- VR 、AR 谁让你眼前一亮
- VR改变大数据的四种方式
- 戴上VR眼镜来一发? VR成人游戏大盘点
- 雷军:小米汽车争取15-20年进入世界前五;GitHub宣布裁员10%,全员转远程办公;谷歌AR/VR负责人宣布离职|极客头条
- 微信上线刷掌支付小程序;扎克伯格谈自家万元 VR 头显:成本价,不学苹果;Fleet推公共预览版|极客头条
- 享未来就现在 聚VR一体机春天已经到来
- 聚VR一体机火爆预售 爱她就送她一部
- VR开发中性能问题—OculusWaitForGPU
- Unity VR大师课程 | 制作你的第一款VR塔防游戏
- VR/AR 时代就在眼前 (二)