При использовании 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
Может кто-нибудь попробовать этот обходной путь, чтобы мы могли быть более уверенными в его использовании?
Спасибо"