using TMPro; using UnityEngine; using UnityEngine.UI; /// /// 适配器:让 CustomKeyboard 可以直接操作 TMP_InputField /// 实现类似 InputDialog 的接口但实际修改 InputField /// public class KeyboardInputAdapter : MonoBehaviour { private TMP_InputField _inputField; private object _manager; // CustomKeyboardManager,使用 object 避免循环引用 public Button ConfirmButton; // 虚拟确认按钮 private bool _shouldClearOnFirstInput = false; // 是否在首次输入时清空 private bool _hasInputOccurred = false; // 是否已经发生过输入 public void SetTarget(TMP_InputField inputField, object manager, bool clearOnFirstInput = false) { _inputField = inputField; _manager = manager; _shouldClearOnFirstInput = clearOnFirstInput; _hasInputOccurred = false; // 创建虚拟确认按钮(CustomKeyboard 需要) var btnGO = new GameObject("VirtualConfirmButton", typeof(Button)); btnGO.transform.SetParent(this.transform, false); ConfirmButton = btnGO.GetComponent