using UnityEngine; using UnityEngine.UI; using QFramework; using System; using System.Collections.Generic; namespace QFramework { public class ImageAndTextNamePanelData : UIPanelData { //试题信息 public QuestionInfo questionInfo; public Action answerCallBack; } public partial class ImageAndTextNamePanel : UIPanel { /// /// 目前正确的Toggle /// public List m_CurrentRightToggle; /// /// 生成的所有的Toggle /// public List m_CurrentAllToggle; /// /// 目前题目类型 /// public string m_CurrentQuestionType; protected override void OnInit(IUIData uiData = null) { mData = uiData as ImageAndTextNamePanelData ?? new ImageAndTextNamePanelData(); } protected override void OnOpen(IUIData uiData = null) { mData = uiData as ImageAndTextNamePanelData ?? new ImageAndTextNamePanelData(); QuestionType.text = mData.questionInfo.QuestionType; InitilOptions(mData.questionInfo); ConfirmBtn.onClick.AddListener(OnConfirmBtnClick); } protected override void OnShow() { } protected override void OnHide() { } protected override void OnClose() { } private void InitilOptions(QuestionInfo questionInfo) { ClearImageOptionSetItem(); var optionArr = questionInfo.Options.Split(';'); for (int i = 0; i < optionArr.Length; i++) { var tempItem = Instantiate(OptionItem.gameObject, OptionConent.transform); tempItem.SetActive(true); var optionItem = tempItem.GetComponent(); if (questionInfo.Answer.Contains(optionArr[i].Split('、')[0])) m_CurrentRightToggle.Add(optionItem); m_CurrentAllToggle.Add(optionItem); optionItem.InitData(optionArr[i]); } } private void OnConfirmBtnClick() { bool result = true; foreach (var item in m_CurrentRightToggle) { if (item.isOn == false) { result = false; } } Debug.LogError(result); if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Practice) { if (result) { mData.answerCallBack?.Invoke(result); CloseSelf(); } else { ShowHighter(); } } else if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Exam) { mData.answerCallBack?.Invoke(result); CloseSelf(); } } private void ShowHighter() { foreach (var item in m_CurrentAllToggle) { if (m_CurrentRightToggle.Contains(item)) { item.Text.color = Color.green; } else { if (item.isOn) { item.Text.color = Color.red; } } } } private void ClearImageOptionSetItem() { for (int i = 0; i < m_CurrentAllToggle.Count; i++) { Destroy(m_CurrentAllToggle[i].gameObject); } m_CurrentAllToggle.Clear(); m_CurrentRightToggle.Clear(); } } }