最近在做一个VR虚拟会议,用到输入框,点击输入框的时候,需要开启虚拟键盘。我们主要使用了Oculus,集成了Oculus的SDK,也使用了MRTK作为我们开发3D界面的组件。
我是使用的Unity2020.3.7版本,在Package Manager中安装了Oculus Integration。
MRTK:是由 Microsoft 驱动的项目,它提供了一系列组件和功能来加速 Unity 中的跨平台 MR 应用开发。
MRTK提供了TMP_KeyboardInputField,能够作为输入框,并且能够自动调用系统的虚拟键盘,就是如何使用,请参考Mixed Reality Keyboard - Mixed Reality Toolkit | Microsoft Docs
在使用的过程中,在Oculus quest中死活调不出来虚拟键盘。
经过定位,oculus需要开启使用系统键盘的,如何开启虚拟键盘呢,有2个办法。
办法一:在OculusProjectConfig配置中,勾选上Require System keyboard。
办法二:修改AndroidManifest.xml,添加oculus overlay_keyboard的使用。
点击Edit->Project Settings->Player->Publishing Settings,勾选上Custom Main Manifest 。
AndroidManifest.xml具体内容如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
</application>
<uses-feature android:name="oculus.software.overlay_keyboard" android:required="false"/>
</manifest>
这样,就可以在oculus里打开虚拟键盘了。最后需要注意的是,完成输入之后,需要点击GO键之后,键盘才能消失,否则键盘消失不了的。
参考文献: