前回Oculus Goの開発環境を構築しました。続いてチュートリアルをやっていこうと思います。
Oculus Goの開発環境を構築しようとしたが頓挫した(Mac, Unity, Android) - もふもふ技術部
Unity公式チュートリアルに玉転がしゲームがあります。書いてあるとおりにやれば普通に動くので、それが動いている状態から、Oculus Goに対応させる手順を書いていきます。
Oculus Go対応させる
前回エントリの開発環境構築時同様に、File -> Build Settings -> Player Settings
でAndroidバージョンや、XR Settings
を設定する。
あとは基本的に以下のエントリをなぞっていけばいける。
Unityの玉転がしチュートリアルを#OculusGoに対応させる - Qiita
File -> Build Settings -> Platform
でAndroidを選択しSwitch Platformボタンを押します。
Build And RunをしてみてOculus Goで表示されることを確認。この時点ではOculus Goのコントローラーを認識してくれないので玉が動きません。
Window -> Asset Store
を開いて、Oculus Integration
をダウンロード・インポートします。これがなかなか時間かかるので根気強く待ちます。
ここが罠なのですが、この状態でビルドしても謎のエラーで落ちます。一旦Unityを再起動してみましょう。するとUpdate Oculus Utilities Plugin
のダイアログが表示されるのでYes高須クリニックします。
再度再起動が求められるので言われるがまま再起動しましょう。
続いて、チュートリアル中で作った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;
の行をコメントアウトするとビルド出来るようになる。
なぜ使わないものをusing
しているのか謎。
その2 No Android devices connected
ときおり突然Oculus Goが認識されなくなることがある。ビルド時にNo Android devices connected
ってダイアログがでます。ちょいちょいでてきてうざい。
USBケーブル抜き差ししたりUnity再起動したりOculus Goを再起動したりPC再起動したりすれば大抵なおる。
今回はそれでもなおらず、アレアレ?って思ってたらUSBケーブル刺さってないやんけ!!!!ばーか!!!