我正在尝试找到活动的输入字段。
在代码中我创建了InputFields并将它们添加到列表中,在列表中它们被添加,但我无法在isFocused中获取它们。主要任务是比较用户输入的数据和InputField的Placeholder中的数据。
using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
public class LetterManager : Loader<LetterManager>
{
public static LetterManager instance = null;
[SerializeField] private string word;
[SerializeField] private Sprite wordSprite;
[SerializeField] private GameObject buttonLetter;
[SerializeField] private GameObject letterUIPanel;
[SerializeField] public string inputText;
[SerializeField] private TextMeshProUGUI buttonText;
[SerializeField] private TMP_InputField _inputField;
private List<TMP_InputField> inputFieldsList = new List<TMP_InputField>();
private void Start()
{
for (int i = 0; i < word.Length; i++)
{
GameObject newButtonLetter = Instantiate(buttonLetter, letterUIPanel.transform) as GameObject;
newButtonLetter.name = $"Button{i}";
buttonText = newButtonLetter.GetComponentInChildren<TextMeshProUGUI>();
buttonText.text = word[i].ToString();
_inputField = newButtonLetter.GetComponent<TMP_InputField>();
inputFieldsList.Add(_inputField);
Debug.Log(buttonText.text);
}
foreach (var input in inputFieldsList) //here check list InputField is OK
{
Debug.Log(input);
}
}
public void LogInputText() //assigned to event manager in InputField, NOT work!
{
foreach (var input in inputFieldsList)
{
if(input.isFocused) Debug.Log(input.name);
}
}
}
问题解决了,有必要明确指出我们在哪个实例上调用 Foreach。
foreach (var input in LetterManager.Instance.inputFieldsList)