У меня есть простая сцена в единстве, в которой есть поле ввода. Когда я запускаю сцену на устройстве Android и нажимаю поле ввода, клавиатура Android не отображается. Я подключаюсь через USB к ноутбуку с помощью приложения Unity Remote 5.
Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class InputNumber : MonoBehaviour {
public InputField input;
// Use this for initialization
void Start () {
if (input)
{
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true);
}
input.keyboardType = TouchScreenKeyboardType.NumberPad;
}
// Update is called once per frame
void Update () {
}
}
При использовании компонента InputField
вам не нужно TouchScreenKeyboard.Open
чтобы открыть клавиатуру вручную. После нажатия на InputField
он откроется сам. Удалите ненужный TouchScreenKeyboard.Open
. TouchScreenKeyboard.Open
код.
Я подключаюсь через USB к ноутбуку с помощью приложения Unity Remote 5.
Это проблема.
Компонент InputField
откроет клавиатуру только при сборке и запуске программы на устройстве. Unity Remote 5 используется только для обнаружения касания на экране и считывания таких датчиков, как GPS и датчики акселерометра, во время программирования в редакторе. Функции, поддерживаемые Unity Remote 5, см. В этом посте.
Кроме того, TouchScreenKeyboard.Open
также не будет работать в редакторе. Вы должны собрать и запустить его на мобильном устройстве, чтобы оно работало, но TouchScreenKeyboard.Open
здесь не требуется. Просто создайте игру и разверните ее на своем устройстве, и клавиатура должна открыться при нажатии на InputField.
Нет необходимости вызывать метод TouchScreenKeyboard.Open(). Собственная клавиатура не будет отображаться, если вы запускаете ее в приложении Unity Remote. Но оно будет отображаться при касании поля ввода после того, как вы соберете и запустите приложение из меню "Файл"> "Параметры сборки"> "Создать" или "Файл"> "Создать и запустить".
вам нужен Cross-Platform-Input
актив из Unity standard asset
пакета Unity standard asset
в хранилище ресурсов. это бесплатно, и после импорта в ваш проект будет работать самостоятельно с текстовым полем. просто импортируйте его и попробуйте снова
тогда вам не понадобится:
if (input)
{
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true);
}
input.keyboardType = TouchScreenKeyboardType.NumberPad;
Мобильный класс Unitys просто откроет клавиатуру при нажатии на поле. дополнительное кодирование не требуется.