📘
【未解決】Questでキーボード入力時にフリーズする
環境
- Unity 2021.3.7f1
- URP
- XR Interaction Toolkit 2.1.1
- OpenXR 1.4.2
- UIで使用中のアセット: VR UI Kit: Material Design System / ver2.1
- Oculus Quest 2
アプリの仕様
- アプリを立ち上げた最初のSceneで入力を行う(Made with Unityの直後のScene)
- サービス内でマイクからの入力を扱っており、初回の再生時点でパーミッションを求める仕様にしている(2回目以降の立ち上げ時には確認は行わない)。以下のスクリプトが最初のSceneのGameObjectにアタッチされている。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if PLATFORM_ANDROID
using UnityEngine.Android;
#endif
public class MicPermissionHelper : MonoBehaviour
{
void Start()
{
#if PLATFORM_ANDROID
if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
{
Permission.RequestUserPermission(Permission.Microphone);
}
#endif
}
}
起きている問題
- Quest単機で動作させたときに、VR内キーボードから入力するとフリーズする(画面が視線に追従する)
- 以下のような画面で、1文字入力するとフリーズ
問題が再現する条件
- 常に発生するわけではなく、以下の1条件のタイミングでのみ発動する
- BuildされたapkファイルをQuestにコピーし、初めて立ち上げたときの初めての入力で発生
- 固まった状態で電源ボタンを押してスリープさせ、再度起動すると(アプリは終了していない)フリーズ状態は解除される。しかしまたキーを選択するとフリーズする。
- 一度アプリを終了し(Homeボタンから)、再度立ち上げた際には問題は発生しない
解決
- マイクパーミッションの確認を一番最初に呼ばないようにしたらフリーズしなくなった
- マイクパーミッションの確認と、初回のSceneのロードで何かしらの干渉を起こしているのか?
- 真因まではたどり着けなかった。
- そもそも仕様として、再生された最初のSceneに入力フォームがある形式は今後変更した方がよい可能性が高い(サービス名を出すスタート画面のSceneを挟むなど)という別の話もある。
ログ
- UnityエディターからQuestのログを出力した。フリーズする時には、フリーズしない時には発生しない以下のWarnが発生していた。
Pid | Tid | Priority | Tag | Message |
---|---|---|---|---|
874 | 23487 | Warn | [CT] | SVEGA: getMap is not supported. |
... | ... | ... | ... | ... |
874 | 1240 | Warn | [CT] | VEGA_MAP_BUILDER: Resolve a potential TrackToMapPointAssosiation conflict between tracks 2097240 (index = 32, version = 88) and 2097239 (index = 32, version = 87) |
- また、フリーズしない時には、フリーズする時には発生しない以下のWarnが発生していた。
Pid | Tid | Priority | Tag | Message |
---|---|---|---|---|
874 | 23820 | Warn | [CT] | VEGA:MAP_TRACKING_HM: [Throttled count=13] Bad map tracking: map tracking failed @ Submap id = 0, version = 617924818 with status: 2 |
... | ... | ... | ... | この後、Throttled countの数字のみが違うエラーが複数回記録されていた |
- これらを調べたが、実態を特定できずだった。(調査終了)。なにか知っている方いたらコメントお願いします!
追記(2022/10/15)
- 入力が行われるSceneの前に別のSceneを挟んでも問題発生!(未解決)
Discussion