Unity VR中用XR Interaction Toolkit射线交互TMP InputField时系统键盘不弹出
VR环境下TMP InputField无法唤起系统键盘的排查点
检查TMP InputField的VR专属设置
打开TMP InputField的Inspector面板,在Input Settings区域确认:Keyboard Type设置匹配你的输入需求(如默认、数字等);- 部分Unity版本中需勾选
Enable VR Keyboard选项,开启VR场景下的键盘唤起支持; - 确保
On Focus事件已绑定正确的触发逻辑——默认情况下TMP InputField不会自动关联VR控制器的按键唤起键盘。
XR Interaction Toolkit的输入映射校验
- 进入
Edit > Project Settings > Input System > Actions,检查XR交互的动作映射,确保控制器的扳机/索引键已绑定Submit或Select动作,且该动作被关联到UI交互的输入处理流程; - 确认XR Ray Interactor的
Interaction Layer Mask包含TMP InputField所在的层级,避免射线无法触发输入框的聚焦事件。
- 进入
Unity VR平台输入配置检查
- 打开
Edit > Project Settings > XR Plug-in Management,确认当前使用的VR平台(如Oculus、SteamVR)的输入模块已启用,且平台专属的键盘输入支持处于开启状态; - 检查
Edit > Project Settings > Input System,确保XR Input已启用,且输入动作列表中包含用于唤起键盘的绑定项(可手动添加"Open Keyboard"动作并关联控制器按键)。
- 打开
手动添加键盘唤起脚本
如果自动配置无效,可通过脚本强制绑定触发逻辑,示例代码如下:using TMPro; using UnityEngine; using UnityEngine.XR.Interaction.Toolkit; public class VRInputFieldKeyboard : MonoBehaviour { [SerializeField] private TMP_InputField targetInputField; [SerializeField] private XRBaseInteractor rayInteractor; private void OnEnable() { targetInputField.onSelect.AddListener(TriggerKeyboard); } private void OnDisable() { targetInputField.onSelect.RemoveListener(TriggerKeyboard); } private void TriggerKeyboard(string currentText) { if (rayInteractor.TryGetUIAction(XRBaseInteractor.InteractionEventType.Select, out var selectAction)) { selectAction.performed += _ => TouchScreenKeyboard.Open(currentText, TouchScreenKeyboardType.Default); } } }将脚本挂载到TMP InputField所在对象上,关联对应的Interactor和InputField组件即可。
平台专属设置排查
- Oculus平台:确认Oculus Integration插件已启用
Oculus Keyboard支持,且Player Settings中勾选了Allow Full Keyboard; - SteamVR平台:检查SteamVR Input中是否配置了键盘唤起的绑定项,且SteamVR Runtime已正常运行。
- Oculus平台:确认Oculus Integration插件已启用
内容的提问来源于stack exchange,提问作者Raja Saad
相关产品推荐
相关产品推荐

