前回Oculus Goの開発環境を構築しました。続いてチュートリアルをやっていこうと思います。

Oculus Goの開発環境を構築しようとしたが頓挫した(Mac, Unity, Android) - もふもふ技術部

Unity公式チュートリアルに玉転がしゲームがあります。書いてあるとおりにやれば普通に動くので、それが動いている状態から、Oculus Goに対応させる手順を書いていきます。

はじめてのUnity - Unity

Oculus Go対応させる

前回エントリの開発環境構築時同様に、File -> Build Settings -> Player SettingsでAndroidバージョンや、XR Settingsを設定する。

あとは基本的に以下のエントリをなぞっていけばいける。

Unityの玉転がしチュートリアルを#OculusGoに対応させる - Qiita

File -> Build Settings -> PlatformでAndroidを選択しSwitch Platformボタンを押します。

switch-platform

Build And RunをしてみてOculus Goで表示されることを確認。この時点ではOculus Goのコントローラーを認識してくれないので玉が動きません。

Window -> Asset Storeを開いて、Oculus Integrationをダウンロード・インポートします。これがなかなか時間かかるので根気強く待ちます。

oculus-integration

ここが罠なのですが、この状態でビルドしても謎のエラーで落ちます。一旦Unityを再起動してみましょう。するとUpdate Oculus Utilities Pluginのダイアログが表示されるのでYes高須クリニックします。

update-oculus-utilities-plugin

再度再起動が求められるので言われるがまま再起動しましょう。

続いて、チュートリアル中で作ったPlayerControllerクラスをリネームしましょう。適当にPlayerBallControllerとかでOK。Oculus Integrationの中のクラス名と重複してしまっているらしい。

ここまで出来たらBuild And Runしてみます。

"OVRPlugin.aar" is denied.というエラーで落ちました。運の良いことにこのエラーは他の人が解決した情報があります。

OVRPlugin.aarファイルの拡張子を変えてOVRPlugin.bakにすれば良いらしい。詳しくはリンク先を参照。

【Oculus Go】コントローラを表示する - Qiita

再びビルド。

あ、タッチパッドで動くじゃん!やったー! 動画とか載っけたいけどだいぶめんどそうなので今回はやめとく。

ハマった謎のエラー集

サクッと書きましたが、Oculus Goアプリの開発はなかなか茨の道かも知れない。ここまで動かすのに3,4回くらい振り出しに戻ってトライしたわけだけど、やるたびやるたび違うエラーに悩まされた。つら。

その1 System.Security.Policy

ビルド時にエラーが出る。

Assets/Oculus/Avatar/Scripts/OvrAvatarSkinnedMeshRenderPBSV2Component.cs(4,23): error CS0234: The type or namespace name 'Policy' does not exist in the namespace 'System.Security' (are you missing an assembly reference?)

該当エラー行をクリックするとエディタが開くので、using System.Security.Policy;の行をコメントアウトするとビルド出来るようになる。

“error CS0234: The type or namespace name ‘Policy’ does not exist in the namespace ‘System.Security’” エラーが発生する (Unityプログラミング)

なぜ使わないものをusingしているのか謎。

その2 No Android devices connected

ときおり突然Oculus Goが認識されなくなることがある。ビルド時にNo Android devices connectedってダイアログがでます。ちょいちょいでてきてうざい。

no-android

USBケーブル抜き差ししたりUnity再起動したりOculus Goを再起動したりPC再起動したりすれば大抵なおる。

今回はそれでもなおらず、アレアレ?って思ってたらUSBケーブル刺さってないやんけ!!!!ばーか!!!