のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

GearVRのハードボタンの挙動を制御する

Unity.VRでGearVRのプラットフォームのボタンの挙動を付け足す際のメモ

審査落ちの内容

Unity.VRのまま審査に提出するとこんなメッセージで審査落ちします

A “back” action is interpreted by the application dependent on its current state, but generally, it will retreat one level in an interface hierarchy. The short-press currently does not bring the user to a pause menu on tap.

A back button long-press (greater than 0.75 seconds) must bring the user to the Universal Menu. We were not able to reproduce a successful return to universal screen experience.

Your volume buttons must adjust the volume using the VR volume UI provided by the Oculus Mobile SDK. Currently, your volume display does not function as expected.

GearVRのハードボタンの挙動が修正項目として書かれています。

具体的には以下のようなメッセージです。
・backボタンを押した際のpauseメニューが表示されない。
・backボタンを長押しした際のUniversalメニューが表示されない。
・ボリュームを変更した際の公式のVRボリュームUIが表示されない。

今回はこの3点の修正方法となります。

修正方法

準備

下記のリンクからOculus Utilities for Unity 5をダウンロードしてきます。
https://developer.oculus.com/downloads/
※ 現状はV0.1.3.0-betaが最新でした

開発中のUnityのプロジェクトにダウンロードしてきたunitypackageをインポートします。

backボタンの挙動を入れる

1. OVRPlatformMenu.csのスクリプトを任意のオブジェクトにアタッチ
2. Cursor_TimerのPrefabをCursor Timerにセット

3. 実機で確認するとbackボタンの挙動が追加される

もし、その他のボタンの挙動を加えたい場合は、この処理を継承して書くといいと思います!

ボリューム変更した際の公式のVRボリュームUIを表示する

1. OVRManager.csを任意のオブジェクトにアタッチ
2. 再生するとOVRVolumeControllerが生成される
3. このままだとOVRを使っていないのでカメラについてこない
→既存のカメラを追従するようにスクリプトを組むなり、親子関係にしてあげる
4. 実機で再生すると音量の大小がUIで見れるようになる

これで正しいのかわからないですが、現状(2016/3/22)はUnity.VRとOVRの組み合わせはこんな感じでやる必要があるみたいですね。

参考
Volume and Menu functionality for Store Submit
https://forums.oculus.com/viewtopic.php?f=67&t=30734

UnityVr vs Oculus Utilities
https://forums.oculus.com/viewtopic.php?t=28188