Oculus Quest に Unity で開発したアプリをいれる方法（Mac/Win）

# やったこと
最低限これだけやれば Oculus Quest に Unity で作ったアプリをいれられるという手順。
最初なので、Unity で新規プロジェクトを作ってそのまま入れてみます。

# 使ったもの
Oculus Quest 64GB
MacPro(2013) MacOS Mojave 10.14.5
GALLERIA SG VR Ready Windows 10 Home
Unity 2018.4.0f1
Mac/Win と Oculus Quest は USB-C <-> USB-A ケーブルを使用（[こういうの](https://www.amazon.co.jp/gp/product/B0791FBQ83)）

# Oculus Quest 用に Unity ビルドをする
1. 3Dで新規プロジェクトを作成
1. Build Settings から Platform を Android に Switch Platform する。
1. Player Settings... から以下の項目を変更する
    2. Other Settings -> Identification の Package Name を適当に変更、同じく Minimum API Level を API level 19 にする
    3. XR Settings -> Virtual Reality Supported にチェックをいれ、Virtual Reality SDKs の + を押して、Oculus を選択する

<img width="412" alt="スクリーンショット 2019-05-26 14.47.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265518/6b891522-a978-176d-0f0d-499fe7e067bd.png">
<img width="439" alt="スクリーンショット 2019-05-26 14.45.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265518/220d2ac5-22c9-0ea4-7b8f-1131d4f11440.png">


これで Build するだけ。
とりあえずは Build が通ることだけを確認する。

Android SDK をインストールしていない場合は、[Android Studio](https://developer.android.com/studio) をダウンロードし、インストールしてください。
インストール後に Unity を立ち上げ直して、Unity の Preferences -> External Tools の Android SDK の Browse を押すと、インストールされたパスを案内してくれるので、そのまま選択する。

# Oculus Quest と Mac/Windows を開発者モードで接続する

### 1. スマホの Oculus アプリから Oculus Quest を開発者モードにする
Oculusの開発者登録をしていない場合は
https://dashboard.oculus.com/ ここに飛ばされるので、団体を登録する。
<img width="240" alt="IMG_5161.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265518/fde61592-a7dc-7f6e-37f4-d58e1f25d350.png">

### 2. （Windows のみ） Oculus Go ADB Drivers をインストールする
[Oculus Go ADB Drivers] (https://developer.oculus.com/downloads/package/oculus-go-adb-drivers/)
ダウンロードし解凍したら、中にはいっている android_winusb.inf を右クリックしてインストール。

### 3. Oculus Quest と Mac/Windows を接続する
接続すると Oculus Quest 側に、PCからの接続を許可するかのダイアログがでるので、許可する。

# Unity でビルドしたアプリを Oculus Quest で実行する
Unity でさきほど Build が成功している状態で
今度は、Build And Run します。
これで、Oculus Quest 上に、Unity のデフォルトの空間が表示されれば成功です。

# 実行したアプリの削除
Oculus Quest 内から、アプリの削除ができなかったので、adb を使う
adb の場所は、以下にあります（Android Studio をインストールしたときに入っている）
Win : C:¥Users¥ユーザー名¥AppData¥Local¥Android¥sdk¥platform-tools
Mac : /Users/ユーザー名/Library/Android/sdk/platform-tools

パッケージ名は、Unity の Player Settings で設定した Package Name です。

```
# インストール済みのアプリの一覧を表示
$ adb shell pm list package

# 削除
$ adb uninstall パッケージ名
```

# Unity 2019 で ~~実行できなかった~~ 実行できた
~~現時点で最新の Unity 2019.1.4f1 で実行できず（起動しようとしてすぐホーム画面に戻る）
[こちら](https://developer.oculus.com/documentation/unity/latest/concepts/unity-req/) に記載されている対応バージョンの 2019.1.2f1 でも同様にダメでした。よく理由はわからず。~~

※ 2019/06/01 追記
Unity 2019 の Graphics APIs の設定の問題でした。@shiena さんコメントありがとうございます。
コンソールにも warning が出ていたのに気づきませんでした。

```
XR is currently not supported when using the Vulkan Graphics API
```

デフォルトでは Vulkan が優先になっているので
Vulkan より OpenGLES3 を優先にするか、もしくは Auto Graphics API にチェックを入れる。で実行できました。
Unity 2019.1.2f1, 1.4f1 どちらもok
<img width="419" alt="スクリーンショット 2019-06-01 10.11.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265518/d033b9e7-8ad1-7c1c-fa84-ff56070f2274.png">


# さいごに
Oculus Quest と Mac を開発者モードでつなぐ部分が、少し手こずりました。
相性なのかタイミングなのかわからないが、Mac の方では何度やっても認識してもらえず
Oculus アプリ側で開発者モードのON/OFFを何度か繰り返したり、USBをさし直したり SMC/PRAMリセットしたりいろいろ試行錯誤しました。
一度つながって許可さえしてしまえば、それ以降は問題ないです。

つぎは、Oculus Integration の Assets をいれて、コントローラの操作をしたいと思います。