using UnityEngine; using UnityEngine.UI; using QFramework; using System.ComponentModel; using System.Linq; namespace QFramework.Example { public class UIInput_AnHuiBaoShiData : UIPanelData { } public partial class UIInput_AnHuiBaoShi : UIPanel { public int CurrentInputIndex;//当前索引次数 [Header("所有的图片")] public Image[] images; [Header("设置最大目标值")] public string[] targetMax; // 设置最大目标值 [Header("设置最小目标值")] public string[] targetMin; // 设置最小目标值 [Header("最大目标值错误次数")] public int errowIntMax = 0;//最大目标值错误次数 [Header("最小目标值错误次数")] public int errowIntMin = 0;//最小目标值错误次数 [Header("错误弹窗")] public GameObject errowTip;//错误弹窗 public Button errowTipClickBtn;//错误弹窗,确认按钮 private string tMP_InputField1Value = "1.770"; private string tMP_InputField2Value = "1.762"; private string tMP_InputField3Value = "0.008"; public int tMP_InputField1ErrowIndex = 0; public int tMP_InputField2ErrowIndex = 0; public int tMP_InputField3ErrowIndex = 0; public GameObject ZheSheInput;//输入三个数值的输入框 public void OnReSet() { InputFieldmax.gameObject.SetActive(true); InputFieldmin.gameObject.SetActive(true); images[0].gameObject.SetActive(true); images[1].gameObject.SetActive(false); images[2].gameObject.SetActive(false); images[3].gameObject.SetActive(false); images[4].gameObject.SetActive(false); tMP_InputField1.gameObject.SetActive(false); tMP_InputField2.gameObject.SetActive(false); tMP_InputField3.gameObject.SetActive(false); errowTip.gameObject.SetActive(false); CurrentInputIndex = 0; errowIntMax = 0; errowIntMin = 0; } protected override void OnInit(IUIData uiData = null) { mData = uiData as UIInput_AnHuiBaoShiData ?? new UIInput_AnHuiBaoShiData(); OnReSet(); OnOpen(); } protected override void OnOpen(IUIData uiData = null) { transform.SetAsLastSibling(); ZheSheInput.gameObject.SetActive(false); CurrentInputIndex = 0; errowIntMax = 0; errowIntMin = 0; InputFieldmax.onEndEdit.RemoveAllListeners(); InputFieldmin.onEndEdit.RemoveAllListeners(); InputFieldmax.onEndEdit.AddListener(CheckInputMax); InputFieldmin.onEndEdit.AddListener(CheckInputMin); tMP_InputField1.onEndEdit.RemoveAllListeners(); tMP_InputField2.onEndEdit.RemoveAllListeners(); tMP_InputField3.onEndEdit.RemoveAllListeners(); tMP_InputField1.onEndEdit.AddListener(CheacktMP_InputField1String); tMP_InputField2.onEndEdit.AddListener(CheacktMP_InputField2String); tMP_InputField3.onEndEdit.AddListener(CheacktMP_InputField3String); tMP_InputField1.gameObject.SetActive(true); tMP_InputField2.gameObject.SetActive(true); tMP_InputField3.gameObject.SetActive(true); } public void CheackAllInputField() { if (tMP_InputField1.text == tMP_InputField1Value && tMP_InputField2.text == tMP_InputField2Value && tMP_InputField3.text == tMP_InputField3Value) { StringEventSystem.Global.Send("InputUI使用结束"); } } private void CheacktMP_InputField1String(string userInput) { if (userInput == tMP_InputField1Value) { tMP_InputField1.text = tMP_InputField1Value; tMP_InputField1.DeactivateInputField(); tMP_InputField1.readOnly = true; CheackAllInputField(); } else { tMP_InputField1ErrowIndex++; if (tMP_InputField1ErrowIndex >= 3) { tMP_InputField1.text = tMP_InputField1Value; tMP_InputField1.DeactivateInputField(); tMP_InputField1.readOnly = true; CheackAllInputField(); return; } else { errowTip.gameObject.SetActive(true); tMP_InputField1.text = string.Empty; } } } private void CheacktMP_InputField2String(string userInput) { if (userInput == tMP_InputField2Value) { tMP_InputField2.text = tMP_InputField2Value; tMP_InputField2.DeactivateInputField(); tMP_InputField2.readOnly = true; CheackAllInputField(); } else { tMP_InputField2ErrowIndex++; if (tMP_InputField2ErrowIndex >= 3) { tMP_InputField2.text = tMP_InputField2Value; tMP_InputField2.DeactivateInputField(); tMP_InputField2.readOnly = true; CheackAllInputField(); return; } else { errowTip.gameObject.SetActive(true); tMP_InputField2.text = string.Empty; } } } private void CheacktMP_InputField3String(string userInput) { if (userInput == tMP_InputField3Value) { tMP_InputField3.text = tMP_InputField3Value; tMP_InputField3.DeactivateInputField(); tMP_InputField3.readOnly = true; CheackAllInputField(); } else { tMP_InputField3ErrowIndex++; if (tMP_InputField3ErrowIndex >= 3) { tMP_InputField3.text = tMP_InputField3Value; tMP_InputField3.DeactivateInputField(); tMP_InputField3.readOnly = true; CheackAllInputField(); return; } else { errowTip.gameObject.SetActive(true); tMP_InputField3.text = string.Empty; } } } /// /// 输入最大值 /// /// private void CheckInputMax(string userInput) { var v = targetMax[CurrentInputIndex].ToString(); if (v != userInput) { //第3次,填入正确答案 if (errowIntMax >= 3) { InputFieldmax.text = targetMax[CurrentInputIndex].ToString(); InputFieldmax.DeactivateInputField(); InputFieldmax.readOnly = true; Invoke("SetNextInput", 2f); return; } errowIntMax++; errowTip.gameObject.SetActive(true); InputFieldmax.text = string.Empty; } //正确++ else { Debug.Log("填写数值正确"); userInput = targetMax.ToString(); SetNextInput(); } } /// /// 输入最小值 /// /// private void CheckInputMin(string userInput) { var v = targetMin[CurrentInputIndex].ToString(); if (v != userInput) { //第四次,填入正确答案 if (errowIntMin >= 3) { InputFieldmin.text = targetMin[CurrentInputIndex].ToString(); InputFieldmin.DeactivateInputField(); InputFieldmin.readOnly = true; Invoke("SetNextInput", 2f); return; } errowIntMin++; errowTip.gameObject.SetActive(true); InputFieldmin.text = string.Empty; } //正确++ else { Debug.Log("填写数值正确"); userInput = targetMax.ToString(); SetNextInput(); } } protected override void OnShow() { } protected override void OnHide() { StringEventSystem.Global.Send("InputUI使用结束"); } protected override void OnClose() { } private void SetNextInput() { if (InputFieldmax.text == targetMax[CurrentInputIndex].ToString() && InputFieldmin.text == targetMin[CurrentInputIndex].ToString()) { //InputFieldmax.ActivateInputField(); //InputFieldmin.ActivateInputField(); //重置 errowTip.gameObject.SetActive(false); errowIntMax = 0; errowIntMin = 0; InputFieldmax.readOnly = false; InputFieldmin.readOnly = false; InputFieldmax.text = string.Empty; InputFieldmin.text = string.Empty; CurrentInputIndex++; if (CurrentInputIndex < images.Length) { // 先递增索引 foreach (var item in images) { item.gameObject.SetActive(false); } images[CurrentInputIndex].gameObject.SetActive(true); } else { foreach (var item in images) { item.gameObject.SetActive(false); } ZheSheInput.gameObject.SetActive(true); } } } } }