核心逻辑
多选题选项中,正确的项全得选上,错误的项都不选,如果前两步都是正确的,则答案正确
结构与代码
里面有判分和跳转逻辑,使用时,如果用不到,就剔除掉
导出包,网盘地址:https://pan.baidu.com/s/1wrsJMSeGKNUjBq6F33vsXA 密码:aaaa
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChooseLogic : MonoBehaviour
{
public string lastQuesName;
public string nextQuesName;
#region 选择部分
//private Toggle togA, togB, togC, togD, togE;
public Toggle[] rightOption;
private bool rightOptionResult;
public Toggle[] wrongOption;
private bool wrongOptionResult;
[SerializeField]
private int singleQuesScore=10;
void Start()
{
//togA = transform.Find("ToggleA").GetComponent<Toggle>();
//togB = transform.Find("ToggleB").GetComponent<Toggle>();
//togC = transform.Find("ToggleC").GetComponent<Toggle>();
//togD = transform.Find("ToggleD").GetComponent<Toggle>();
//togE = transform.Find("ToggleE").GetComponent<Toggle>();
transform.Find("SubmitBtn").GetComponent<Button>().onClick.AddListener(ClickSubmitBtn_T);
//Color x = new Color();
}
void Update()
{
}
//第题
public void ClickSubmitBtn_T()
{
rightOptionResult = JudgeRightArray();
wrongOptionResult = JudgeWrongArray();
if (rightOptionResult==true&&wrongOptionResult==true)
{
Debug.Log("正确");
switch(gameObject.name)
{
case "T1":
ScoreLogic.score4_01 =singleQuesScore;
//Debug.Log(ScoreLogic.score4_01);
break;
case "T2":
ScoreLogic.score4_02 = singleQuesScore;
//Debug.Log(ScoreLogic.score4_02);
break;
case "T3":
ScoreLogic.score4_03 = singleQuesScore;
//Debug.Log(ScoreLogic.score4_03);
break;
case "T4":
ScoreLogic.score4_04 = singleQuesScore;
break;
case "T5":
ScoreLogic.score4_05 = singleQuesScore;
break;
case "T6":
ScoreLogic.score4_06 = singleQuesScore;
break;
case "T7":
ScoreLogic.score4_07 = singleQuesScore;
break;
case "T8":
ScoreLogic.score4_08 = singleQuesScore;
break;
case "T9":
ScoreLogic.score4_09 = singleQuesScore;
break;
case "T10":
ScoreLogic.score4_10 = singleQuesScore;
break;
case "T11":
ScoreLogic.score4_11 = singleQuesScore;
break;
}
}
else
{
Debug.Log("错误");
switch (gameObject.name)
{
case "T1":
ScoreLogic.score4_01 = 0;
//Debug.Log(ScoreLogic.score4_01);
break;
case "T2":
ScoreLogic.score4_02 = 0;
//Debug.Log(ScoreLogic.score4_02);
break;
case "T3":
ScoreLogic.score4_03 = 0;
//Debug.Log(ScoreLogic.score4_03);
break;
case "T4":
ScoreLogic.score4_04 = 0;
break;
case "T5":
ScoreLogic.score4_05 = 0;
break;
case "T6":
ScoreLogic.score4_06 = 0;
break;
case "T7":
ScoreLogic.score4_07 = 0;
break;
case "T8":
ScoreLogic.score4_08 = 0;
break;
case "T9":
ScoreLogic.score4_09 = 0;
break;
case "T10":
ScoreLogic.score4_10 = 0;
break;
case "T11":
ScoreLogic.score4_11 = 0;
break;
}
}
}
public bool JudgeRightArray()
{
for (int i = 0; i < rightOption.Length; i++)
{
if (rightOption[i].isOn == false)
{
return false;
}
//Debug.Log("正确选项的的钩" + rightOption[i].isOn);
}
return true;
}
public bool JudgeWrongArray()
{
for (int i = 0; i < wrongOption.Length; i++)
{
if (wrongOption[i].isOn == true)
{
return false;
}
//Debug.Log("正确选项的的钩" + rightOption[i].isOn);
}
return true;
}
#endregion
#region 跳转部分
/// <summary>
/// 去“上一题”
/// </summary>
public void BackToLastQues()
{
//清空本题已经选择的项
EmptyChoosedOption();
//"上一题"显示
GameObject lastQues = GetGOByName(lastQuesName);
lastQues.SetActive(true);
//本题隐藏
transform.gameObject.SetActive(false);
}
/// <summary>
/// 去“下一题”
/// </summary>
public void ForwardToNextQues()
{
//清空本题已经选择的项
EmptyChoosedOption();
//"上一题"显示
GameObject nextQues = GetGOByName(nextQuesName);
nextQues.SetActive(true);
//本题隐藏
transform.gameObject.SetActive(false);
}
//【工具方法】清空本题的选择
private void EmptyChoosedOption()
{
transform.Find("ToggleA").GetComponent<Toggle>().isOn = false;
transform.Find("ToggleB").GetComponent<Toggle>().isOn = false;
transform.Find("ToggleC").GetComponent<Toggle>().isOn = false;
transform.Find("ToggleD").GetComponent<Toggle>().isOn = false;
transform.Find("ToggleE").GetComponent<Toggle>().isOn = false;
}
//【工具方法】通过名字,找到题目GameObject
private GameObject GetGOByName(string QuesName)
{
Transform canvas = transform.Find("/Canvas");
Transform xQuesTra = canvas.Find(QuesName);
GameObject xQues = xQuesTra.gameObject;
return xQues;
}
#endregion
}