EditorGUILayout.TextField没有返回更新的inputText

时间:2018-05-07 13:13:01

标签: c# unity3d

我有一个简单的窗口,我想打印以控制用户在按下按钮时在所述窗口的文本字段中写入的值。即使我更改了打印到控制台的文本也始终是默认文本(abcd)。我检测到的另一件事是,当我更改文本字段中的文本并按下返回按钮时,它会再次更改回默认值。

为什么inputText值始终是默认值?我怎样才能正常工作?

using UnityEditor;
using UnityEngine;
using System.Collections;

public class PhraseAccept : EditorWindow
{
    public string editorWindowText = "Write your text here: ";
    string newProjectName = "abcd";
    int projectNumber = 1;

    void OnGUI()
    {
        string inputText = "";
        inputText = EditorGUILayout.TextField(editorWindowText, newProjectName);
        this.Repaint();

        if (GUILayout.Button("OK"))
            Debug.Log(inputText);

        if (GUILayout.Button("Abort"))
            Close();
    }

    [MenuItem("Tools/PhraseAccept2")]
    public static void main()
    {
        EditorWindow window = GetWindow(typeof(PhraseAccept));
        window.Show();
    }
}

1 个答案:

答案 0 :(得分:1)

应该是这样的:

newProjectName = EditorGUILayout.TextField(editorWindowText, newProjectName);

此外,您每次调用inputText时都会将OnGUI设置为null,这可能是多次。