В скрипте редактора Unity, когда фокус моего окна редактора, как заставить окно редактора не фокусировать текстовое поле - PullRequest
0 голосов
/ 30 сентября 2018

см. Мой gif, если в последнем фокусе окна редактора я фокусирую текстовое поле, а следующий фокус, окно редактора автоматически фокусирует это текстовое поле

enter image description here

Я нахожуЕдинственный редактор редактора "Иерархия" не имеет этой ошибки, когда я фокусирую их поисковую панель и теряю фокусировку и перефокусируюсь, поисковая панель "Иерархия" не фокусируется

Я думаю, что должен существовать способ сделать это,как мне поступить?

Я уверен, что я использую правильный код удаления фокуса в своем классе редактора

private void OnFocus()
{
    RemoveInputFocus();
}

private void OnLostFocus()
{
    RemoveInputFocus();
}

private static void RemoveInputFocus()
{
    // EditorGUI.FocusTextInControl(null);
    GUIUtility.keyboardControl = 0;
}

1 Ответ

0 голосов
/ 30 сентября 2018

Я исправляю это, запускаю GUIUtility.keyboardControl = 0 в блоке OnGUI, блок OnGUI важен, если я поставлю GUIUtility.keyboardControl = 0 в OnFocus, он не будет работать, я думаю, после того, как единство OnFocus сделает что-то, чтобы получить последний фокус

private void OnGUI()
{
    // on OnGUI start
    if (firstEnterAfterFocus)
    {
        RemoveInputFocus();
        firstEnterAfterFocus = false;
    }
}


private bool firstEnterAfterFocus;

private void OnFocus()
{
    firstEnterAfterFocus = true;
    // RemoveInputFocus();
}

private static void RemoveInputFocus()
{
    // EditorGUI.FocusTextInControl(null);
    GUIUtility.keyboardControl = 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...