В настоящее время я занимаюсь разработкой системы Highscore для Android.У меня есть поле ввода, где игрок будет вводить свое имя.
Я хочу, чтобы игроку не приходилось нажимать на это поле ввода, чтобы ввести его. Однаковсе мои попытки пока не увенчались успехом.
В настоящее время у меня есть префаб под названием
HighScoreTemplate .Этот префаб имеет поле ввода пользовательского интерфейса (для имени) и текстовый объект пользовательского интерфейса (для оценки).Он также имеет скрипт под названием
HighScoreTemplate.cs .
Я создал функцию Select () в сценарии HighScoreTemplate.cs , которая вызовет .Select () в поле ввода, а затем .ActivateInputField () впоследствии.
public void Select()
{
// Select it
NameField.Select();
NameField.ActivateInputField();
}
Однако это не было автоматическим выбором поля ввода NameField, так как клавиатура не выскочила на моем Androidустройство.
В ходе отладки я убедился, что эта функция Select () вызывается и запускается.
Я также подтвердил, что это поле ввода является интерактивным, я могу видеть флажок для этого флажка в инспекторе, когда я выбираю его.
Затем я предположил, что, возможно, Unity имел задержку, поэтому я попытался этот тестчтобы посмотреть, сработает ли это:
int counter = 1;
while(counter <= 50 && !_newHighScoreTemplate.NameField.isFocused)
{
_newHighScoreTemplate.Select();
Debug.Log("Select Attempt #" + counter);
counter++;
}
Этот тест дал мне тот же результат, клавиатура Android не всплывала и позволяла мне вводить текст в поле ввода.
Может ли кто-нибудь пролить свет на то, что я делаю неправильно?Почему мое поле ввода не получает фокус и почему клавиатура в Android не выскакивает, чтобы я мог печатать в поле, не нажимая сначала на него?