private void showAlwaysCaret() { if (textArea.text == "") { caretPos = 0; } if (EventSystem.current.currentSelectedGameObject != textArea.gameObject) { textArea.caretPosition = caretPos; textArea.GetType().GetField("m_AllowInput", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(textArea, true); textArea.GetType().InvokeMember("SetCaretActive", BindingFlags.NonPublic | BindingFlags.InvokeMethod | BindingFlags.Instance, null, textArea, null); } else if (EventSystem.current.currentSelectedGameObject == textArea.gameObject) { caretPos = textArea.caretPosition; } }