如何在Unity Editor/Remote Rendering中启用Hololens 2系统键盘?
解决Unity Editor/Remote Rendering下MRTK唤起沉浸式系统键盘的方法
1. 检查MRTK输入配置
- 打开Project Settings > Mixed Reality Toolkit > Input,进入
Input System Profile - 找到
Keyboard Settings模块:- 确保
Enable Keyboard已勾选 - 将
Keyboard Type设置为System(Editor下会调用Windows系统虚拟键盘,Remote Rendering环境下适配远程输入) - 勾选
Show Keyboard On Focus,让输入字段获得焦点时自动唤起键盘
- 确保
2. 代码手动触发虚拟键盘
如果自动唤起逻辑不生效,可以通过代码强制调用MRTK的键盘服务:
using Microsoft.MixedReality.Toolkit; using Microsoft.MixedReality.Toolkit.Input; using TMPro; using UnityEngine; public class KeyboardHandler : MonoBehaviour { [SerializeField] private TMP_InputField targetInputField; private void OnEnable() { if (targetInputField != null) { targetInputField.onSelect.AddListener(_ => OpenVirtualKeyboard()); } } private void OnDisable() { if (targetInputField != null) { targetInputField.onSelect.RemoveListener(_ => OpenVirtualKeyboard()); } } private void OpenVirtualKeyboard() { var keyboardService = CoreServices.InputSystem?.KeyboardService; if (keyboardService == null) return; keyboardService.ShowKeyboard(targetInputField.text, targetInputField.characterLimit, false); keyboardService.KeyboardTextSubmitted += UpdateInputFieldText; keyboardService.KeyboardHidden += CleanupKeyboardEvent; } private void UpdateInputFieldText(object sender, KeyboardTextEventArgs args) { targetInputField.text = args.Text; } private void CleanupKeyboardEvent(object sender, System.EventArgs args) { var keyboardService = CoreServices.InputSystem?.KeyboardService; if (keyboardService == null) return; keyboardService.KeyboardTextSubmitted -= UpdateInputFieldText; keyboardService.KeyboardHidden -= CleanupKeyboardEvent; } }
- 将脚本挂载到包含
TMP_InputField的GameObject上,指定targetInputField - 输入字段获得焦点时,会自动唤起系统虚拟键盘(Editor下调用Windows系统键盘,Remote Rendering环境下适配远程输入通道)
3. Remote Rendering环境额外配置
如果使用Azure Remote Rendering:
- 确保ARR Session配置中勾选
Enable Input,开启远程输入通道 - 检查MRTK的
Input System Profile>Remote Input模块,确认已配置接收远程输入 - 上述代码的键盘调用逻辑会自动通过远程通道同步,在Editor端唤起本地虚拟键盘,或在Hololens端触发系统键盘
注意事项
- Unity Editor下,系统虚拟键盘依赖Windows的
Touch Keyboard and Handwriting Panel Service,确保该服务未被禁用 - 旧版MRTK(v2.x)的配置路径略有差异,核心是找到
Keyboard Settings并启用系统键盘选项
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

