using UnityEngine; using UnityEngine.UI; using QFramework; using System.Collections.Generic; namespace QFramework.Example { public class DaTiUIData : UIPanelData { } public partial class DaTiUI : UIPanel { public List questions = new List(); public Button TiJiaoBtn; public Button XiaYiBuBtn; private int totalScore = 0; // 新增变量用于记录总得分 private List answerResults = new List(); // 用于记录每道题的答题结果 /// /// 初始化数据 /// public void ReSetData() { totalScore = 0; // 重置总得分 answerResults.Clear(); // 清空答题结果记录 for (int i = 0; i < questions.Count; i++) { int P = i; questions[P].JieXi.gameObject.SetActive(false); for (int j = 0; j < questions[P].options.Count; j++) { questions[P].options[j].interactable = true; questions[P].options[j].isOn = false; } } TiJiaoBtn.gameObject.SetActive(true); XiaYiBuBtn.gameObject.SetActive(false); } /// /// 按钮,提交答案 /// public void TiJiao() { totalScore = 0; // 每次提交时重置总得分 answerResults.Clear(); // 清空答题结果记录 for (int i = 0; i < questions.Count; i++) { int P = i; bool isCorrect = false; // 标记本题是否答对 bool hasSelected = false; // 标记本题是否有选择 for (int j = 0; j < questions[P].options.Count; j++) { Toggle Curtog; if (questions[P].options[j].isOn) { hasSelected = true; Curtog = questions[P].options[j]; if (Curtog == questions[P].rightToggle) { isCorrect = true; totalScore += questions[P].scoreValue; // 答对加两分 Debug.Log($"第 {i + 1} 题:答对了,当前总得分: {totalScore}"); questions[P].JieXi.gameObject.SetActive(false); // 答对隐藏解析 } else { Debug.Log($"第 {i + 1} 题:答错了,当前总得分: {totalScore}"); questions[P].JieXi.gameObject.SetActive(true); // 答错显示解析 } break; // 找到所选的 Toggle 后跳出内层循环 } questions[P].options[j].interactable = false; } if (!hasSelected) { isCorrect = false; Debug.Log($"第 {i + 1} 题:未选择答案,答错了,当前总得分: {totalScore}"); questions[P].JieXi.gameObject.SetActive(true); // 未选择答案显示解析 } answerResults.Add(isCorrect); // 记录本题的答题结果 } Debug.Log($"最终总得分: {totalScore}"); ScoreController.Instance.Add("单选题", totalScore); TiJiaoBtn.gameObject.SetActive(false); XiaYiBuBtn.gameObject.SetActive(true); } protected override void OnInit(IUIData uiData = null) { mData = uiData as DaTiUIData ?? new DaTiUIData(); // please add init code here TypeEventSystem.Global.Register(OnModuleQuit).UnRegisterWhenGameObjectDestroyed(gameObject); } protected override void OnOpen(IUIData uiData = null) { ReSetData(); TiJiaoBtn.onClick.RemoveAllListeners(); TiJiaoBtn.onClick.AddListener(() => { TiJiao(); }); XiaYiBuBtn.onClick.RemoveAllListeners(); XiaYiBuBtn.onClick.AddListener(() => { StringEventSystem.Global.Send("理论考核通过"); Hide(); }); } protected override void OnShow() { } protected override void OnHide() { // StringEventSystem.Global.Send("理论考核通过"); } protected override void OnClose() { } public void OnModuleQuit(OnModuleQuit arg) { Hide(); } } }