Android スマートフォンでの VR(1)
本項目は 2020/07/20 時点での情報である。
旧来のGoogle VR SDK for Unityは最新の Unity では動作しない。
Cardboard SDKを導入する必要がある。
基本的にはQuickstart for Google Cardboard for Unityに沿って実施すればよい。
開発環境
- Unity ver 2019.3.3f1 + Android Build Support +iOS Build Support
- 実際に iOS のアプリを作るのではないが、プラグインのプログラムエラーを回避するのに必要。
- Google Cardboard XR Plugin for Unity v1.1.0
- GIT for Windows
GIT コマンドのチェック
Windows コマンドプロンプトでgitコマンドの存在をチェックする。
- Windows のアプリ検索ボックスから
cmdを入力し「コマンドプロンプト」を起動する。

- コマンドプロンプトで
gitと入力して Enter キーを押し、以下のような表示が出れば OK。

上手く行かない場合はGIT for Windowsからダウンロードしてインストールする。
プロジェクトの作成
- プロジェクト名「CardBoard01」とし、タイプは 3D で作成する。

- 「ウィンドウ」→「パッケージマネージャ」を開く。

- 「+」マークをクリックし「Add package from git URL」を実行する。

https://github.com/googlevr/cardboard-xr-plugin.gitという URL をペーストして Add ボタンを押す。

- しばらく(10 秒程度)待つとインポートが始まる。

- 「Import into Project」をクリックする。

- 「Assets」フォルダに以下のようなフォルダが追加されたら、Package Manager を閉じる。

Assets/Samples/Google Cardboard/1.1.0/Hello Cardboard/AssetsのHelloCardboardを開く。

- 「ファイル」→「ビルド設定」を開き、「Android」を選択して「Switch Platform」する。

- 「シーンを追加」を押す。

- ここでプラグインのプログラムに下記エラーがある場合は iOS の Build Support がインストールされていないので Unity Hub から iOS Build Support をインストールする。
- メッセージに「iOS」が含まれているのが特徴。
Library\PackageCache\com.google.xr.cardboard@8979e065b7c0223f80c7fa5101ffc696f28bf2eb\Editor\BuildPostProcessor.cs(27,23): error CS0234: The type or namespace name 'iOS' does not exist in the namespace 'UnityEditor' (are you missing an assembly reference?)
- 「プレイヤー設定」を押す。「Player」の「解像度と表示」を「横向き(左)」にする。

- Unity Pro ライセンスの場合のみ「スプラッシュ画像」の「スプラッシュスクリーンを表示」のチェックを外す。

- 「その他の設定」の「Graphics APIs」で「+」ボタンを押し「OpenGLES2」を追加する。

- 「その他の設定」の「Graphics APIs」から「Vulkan」「OpenGLES3」を「-」ボタンを押して消す。

- 最終的には「OpenGLES2 だけ」が残る。

- 「パッケージ名」を
com.oit.CardBoard01にしてEnterキーを押す。

- 「スクリプティングバックエンド」を「MONO」にする。
- オリジナルの資料では「スクリプティングバックエンド」は「IL2CPP」にすることになっている。
- しかし「IL2CPP」だと「スプラッシュ画像」の「スプラッシュスクリーンを表示」をオフにしない場合、黒い画面が出て操作不能となる。
- スプラッシュスクリーンとは、アプリ起動時の Unity ロゴ表示のことで、Unity Personal ライセンスではオフにできない。

- 「ターゲットアーキテクチャ」で ARMv7 と ARM64 の両方にチェックを入れる。

- インターネットアクセスを必須にする。

- 「公開設定」で「カスタム Gradle テンプレート」にチェックを入れる

Assets/Plugins/Android/mainTemplate.gradleを右クリックし、エクスプローラーで開く。

- エクスプローラーで開かれた
mainTemplate.gradleを右クリックし、「プログラムから開く」でメモ帳などのテキストエディタで開く。

- 以下の 4 行を図のように貼り付けて保存し、テキストエディタは閉じる。
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.google.android.gms:play-services-vision:15.0.2'
implementation 'com.google.protobuf:protobuf-lite:3.0.0'

- 「XR Plugin Management」で「CardBoard XR Plugin」にチェックを入れる。

HelloCardBoardシーンをビルドして、Android 端末にインストールすると VR アプリとして再生される。- パソコンの UnityEditor 上で再生してはいけない。再生すると次のようなエラーが出て、「XR Plugin Management」から「CardBoard XR Plugin」が消えてしまう。
- この場合は Unity を再起動する。
- ただし、一旦「CardBoard XR Plugin」にチェックした後はビルドおよび Android 端末へのインストールは可能なようである。
DllNotFoundException: cardboard_api
Google.XR.Cardboard.Api.HasDeviceParams () (at Library/PackageCache/com.google.xr.cardboard@8979e065b7c0223f80c7fa5101ffc696f28bf2eb/Runtime/Api.cs:101)
CardboardStartup.Start () (at Assets/Samples/Google Cardboard XR Plugin for Unity/1.1.0/Hello Cardboard/Assets/Scripts/CardboardStartup.cs:39)