При использовании Holotoolkit keyboard.prefab ввод в системной клавиатуре Unity также показан для приложения Windows Mixed Reality

Я использую префаб клавиатуры с элементами пользовательского интерфейса KeyboardInputField из MixedRealityToolkit, и когда я выбираю одно из KeyboardInputField в сборке, я получаю как префаб клавиатуры, так и системную клавиатуру. Более ранняя сборка, которую я сделал с использованием обоих этих методов, не отображала виртуальную клавиатуру системы, но я не знаю, что я мог изменить, чтобы вызвать это. Я использую Unity 2017.2.0p2-MRTP5 и MixedRealityToolkit для Unity 2017.2.1f1. (это было предложено представителем Microsoft, с которым я говорил). Я создаю эффект погружения, и тип сборки Unity установлен на D3D, а не на XMAL.

2 ответа

Ваш компонент ввода на самом деле наследует класс InputField в namespace: UnityEngine.UI.

Когда вы активируете действие ввода, Windows автоматически вызовет встроенную клавиатуру системы.

Отключение клавиатуры невозможно отменить, если вы не используете UnityEngine.UI.InputField Составная часть.

Что вы можете сделать, это отредактировать скрипт самостоятельно.

Я нашел решение в сообщении об ошибке на MixedRealityToolkit

ivan2007:
"У меня такая же проблема с моим приложением. Документация Unity гласит:

Приложения для Магазина Windows: в универсальных приложениях для Windows 10 клавиатура с сенсорным экраном поддерживается только в приложениях на основе XAML с поддержкой сенсорного ввода.

Мое приложение с Build Type D3D, а не с xaml, так что это первая странная вещь.

Однако, поскольку клавиатура показана, мы можем попытаться отключить поддержку сенсорного ввода.

Для этого мы можем определить новый BaseInput, используемый BaseInputModule, где touchSupported переопределяется и устанавливается в false.

BaseInputModule имеет защищенное свойство m_InputOverride, которое мы можем использовать, чтобы указать единице использовать новый BaseInput.

Тем не менее, в качестве временного решения я сделал прикрепленный скрипт, который можно добавить к игровому объекту EventSystem сцены или к другому игровому объекту (в последнем случае вы должны установить поле BaseInputModule с текущим модулем ввода).

В моем случае это похоже на работу (родная клавиатура не показана).
Unity 2017.3.0f3 с HMD
Может кто-нибудь попробовать этот обходной путь, чтобы мы могли быть более уверенными в его использовании?
Спасибо"

https://github.com/Microsoft/MixedRealityToolkit-Unity/files/1710401/HideUnityTouchScreenKeyboard.zip

https://github.com/Microsoft/MixedRealityToolkit-Unity/files/1713278/HideUnityTouchScreenKeyboardC.4.zip

Другие вопросы по тегам