void Update() { var selectedField = EventSystem.current.currentSelectedGameObject?.GetComponent <InputField>(); if (selectedField != null && selectedField.GetInstanceID() != ID) { currentInputField = selectedField; Keyboard.SetActive(true); externTextField.ClearExterTextField(); ID = currentInputField.GetInstanceID(); gameObject.transform.position = EventSystem.current.currentSelectedGameObject.transform.position; Keyboard.transform.localPosition = new Vector3(0, ((transform as RectTransform).sizeDelta.y + (Keyboard.transform as RectTransform).sizeDelta.y) / -2, 0) + KeyboardPositionOffset; } }
// ... public void OnGUI() { inputField = (InputField)EditorGUILayout.ObjectField("Input Field", inputField, typeof(InputField), true); // if inputField has nothing currently assigned if (inputField == null) { // make sure we have and int stored if (ToolReferences.inputFieldId != 0) { inputField = (InputField)EditorUtility.InstanceIDToObject(ToolReferences.inputFieldId); } else // ... prompt the user to assign one } // if we have an InputField assigned, store ID to int else if (inputField != null) ToolReferences.inputFieldId = inputField.GetInstanceID(); }