using System; using System.Linq; using System.Xml.Serialization; using UnityEngine; using UnityEngine.UI; using ZXKFramework; namespace DongWuYiXue.DaoNiaoShu { public class ImgSelectManager : MonoBehaviour { ImgOption[] imgOptions; public ImgOption[] answers; public void Init() { transform.FindFirst("MaxImage").SetActive(false); imgOptions = GetComponentsInChildren(); for (int i = 0; i < imgOptions.Length; i++) { imgOptions[i].Interactable(); imgOptions[i].UnSelect(); imgOptions[i].SetNormalColor(); imgOptions[i].maxAction = MaxImage; } } public bool Check() { //判断逻辑 ImgOption[] yourSelect = imgOptions.ToList().FindAll(e => e.isSelect == true).ToArray(); bool isTrue = AreArraysEqual(yourSelect, answers); for (int i = 0; i < answers.Length; i++) { answers[i].SetRightColor(); } for (int i = 0; i < yourSelect.Length; i++) { if (!answers.Contains(yourSelect[i])) { yourSelect[i].SetFalseColor(); } } for (int i = 0; i < imgOptions.Length; i++) { imgOptions[i].UnInteractable(); } return isTrue; } bool AreArraysEqual(ImgOption[] array1, ImgOption[] array2) { if (array1 == null && array2 == null) return true; // 如果都为null,返回true if (array1 == null || array2 == null) return false; // 如果任一数组为null,返回false if (array1.Length != array2.Length) return false; // 如果长度不同,返回false for (int i = 0; i < array1.Length; i++) { if (!array2.Contains(array1[i])) return false; } return true; // 使用SequenceEqual判断内容是否完全相同 } public string GetYourAnswer() { string str = ""; ImgOption[] yourSelect = imgOptions.ToList().FindAll(e => e.isSelect == true).ToArray(); for (int i = 0; i < yourSelect.Length; i++) { str += yourSelect[i].GetComponentInChildren().text + " "; } if (string.IsNullOrEmpty(str)) { return "用户未作答"; } return str; } public void MaxImage(Sprite s) { transform.FindFirst("MaxImage").SetActive(true); transform.FindFirst("MaxImage").FindFirst("Image").sprite = s; } } }