When running in the editor, my textfields work perfectly fine, but when I build and run the scene it doesn't work correctly.
Using a TextField, I see that it's constantly selecting the last character you entered, so it gets replaced with whatever character you enter, and it keeps doing that. This leads to it only ever letting you write one letter.
Using a TextArea, I see the cursor is constantly in front of the last character you entered, so the next character will be written before it. This leads to everything you write coming out backwards.
I've searched around for answers to why this happens, and I found one related question for the TextField that didn't actually have an answer (because their problem was really elsewhere), and another related question on the TextArea, but that was claimed to have been fixed years ago.
I'm not doing anything fancy code-wise. The following is my field code, located within a switch-case under OnGUI:
tf = GUI.TextField(new Rect(270f,100f,150f,25f),tf);
The variable tf is defined at the top of the class:
public string tf = "";
Now, I did just find a band-aid that will let me continue:
TextEditor te = (TextEditor)GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl);
te.SelectNone();
te.MoveLineEnd();
But it's not optimal, since it means the text that is entered is no longer selectable. Does anyone have an idea of what's happening here?
↧