Unity使ってAndroidのAR Foundation 環境構築

# はじめに
ARアプリを作りたいなと思ってUnityで環境構築し始めたら、引っかかることがちょこちょこあったので、備忘として残します。

Androidのカメラに「Hello World」を表示するところまでの手順です。
サンプル画像は下記のような感じ。
ここまではノーコーディングでできます！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/0472af8a-a9fe-83c5-0010-72f7898f1efd.png)

# 開発環境
- Windows10
 + Unity(Ver2020.2.1f1)(※1)
 + AndroidStudio(Ver4.1.1)
 + OpenJDK(Ver15.0.1)
- Androidスマホ(Redmi Note 9S OS Ver:10)

Unity と AndroidStudio と SDK のインストールが必要なので、下記参考URLを元に構築しました。
ただ情報が古くAndroidStudioとSDKのインストールが必要かは実は怪しいです。(ちゃんと調べずやりました、、、)
また、参考URLではOracleJDKなのですが、OracleJDKは有償なので、OpenSDKに置き換えて環境構築しました。

[参考URL]
・Unity、AndroidStudioインストール手順
https://techacademy.jp/magazine/2229
・OpenSDKインストール手順
https://www.javadrive.jp/start/install/index1.html

ちなみに、なぜ怪しいかと思ったかというと、下記画像のようにUnityインストール時にAndroid SDKとOpenJDKのインストールも選択できるからです。
デフォルトでは、両方選択されていなかったのですが、両方インストールしないと結果的にエラーがでたので、Unityインストール時は両方インストールする方が良いです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/e4c7f82e-f7ff-c972-15a5-145ec6db5641.png)

※1
注意点!
Unityのバージョンは、2020じゃないエラーでて先に進めなくなりました。
現在(2020/12現在)Unityを普通にインストールすると、2019.4(LTS)がインストールされるので、下記から2020のバージョンをダウンロードしてインストールしてください。(私はUnityHubボタンを押してインストールしました)
これが一番大事かもしれない。
https://unity3d.com/jp/get-unity/download/archive

# プロジェクト作成
### 1. UnityHubを起動
Unityと一緒にUnityHubがインストールされているはずなので、UnityHubを起動する。
### 2. 新規プロジェクトを作成
新規作成ボタンの右の▼ボタンを押して、Version20.2.Xを選択する。
プロジェクト名入力(任意)→保存先(任意)→テンプレートで"3D"を選択し、作成ボタン押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/c3fecafc-e95e-aee4-f46f-d81f608adc71.png)

### 3. 開発画面が表示されるまで待つ
こんな画面がでたらプロジェクト生成と起動成功！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/f46f21c7-a011-c484-b0b3-931963a3aa5b.png)


# とりあえずAndroidでUnityアプリを起動してみる。
まずは、何もせずにAndroid向けにアプリをビルド→Androidにインストールして、起動するか確認してみる。(何が問題でエラーになったかわかるようにするため)

### 1. BuildSetting画面を表示する。
Unity画面上の[File]→[Build Settings]を押下
### 2. Android用にビルドする。
[Android]を選択し、[Switch Platform]ボタンを押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/dccd1f99-9d88-483c-74bf-816db83cf72e.png)
### 3. Android端末を開発者モードをONにして、USBデバッグを有効にする。
この辺を参考。
https://sp7pc.com/google/android/39763

### 4. PCとAndroidを接続
Android端末とPCをUSBで接続すると、Android側にUSB接続モードを選択する画面が表示されるので、「ファイル転送」を選択しておく。

### 5. Build & 実行する。
Unity側で[Build And Run]が押せるようになるので、押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/4cd5f1fd-f0a7-1c53-6365-77363d55f751.png)

実行ファイルの保存先を聞かれるので、任意のフォルダに任意の名前で保存する。
(今回は"test"という名前にしました)
なお、未確認ですが、任意のフォルダについては、フォルダパスに全角文字が入っていない方が良いかもしれません。(エラー発生時はフォルダを変えよ。という書き込みをいくつか見たので)

Android側でインストールするか？と聞かれるので、インストールすると勝手に実行される。

スマホで下記のような画面がでたらビルド成功！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/ecdcbe60-2a9d-3fad-01c2-e98d6c18ab94.png" width=30%>

# Unity に AR開発用のPackageをインストールする。
### 1.PackageManagerを表示する。
[Window]→[Package Manager]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/37f2a2e7-d57d-f1c1-397c-efe30f4b0a37.png)

### 2.Packageをインストールする。
下記5つのpackageをインストールする。
・AR Foundation
・ARCore XR Plugin
・ARKit XR Plugin
・Multiplayer HLAPI
・XR Legacy Input Helpers

- インストール方法は、まず表示PackageをUnity Registryにする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/fb52a2b6-b146-10f1-4712-d7ebe9399092.png)

- インストールしたいパッケージを選択し、installボタンを押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/1995619b-e837-a7cd-1c86-57849dd3bb52.png)

- Multiplayer HLAPIt と XR Legacy Input Helpersについて
Multiplayer HLAPIt と XR Legacy Input HelpersはPackage一覧に表示されていないので、
[+]ボタン→[Add package from git URL]を押下して、それぞれ下記を入力するとインストールできる。
com.unity.xr.legacyinputhelpers
com.unity.multiplayer-hlapi

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/d58329de-4ca0-f68f-b152-ce1126552d29.png)

# AR表示用のオブジェクトを追加する。
下記の図の通り、HierarchyウインドウのSampleSceneを右クリックし、
### 1. [GameObject]→[XR]から下記2つを選択する。
・AR Session Origin
・AR Session

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/602f1afe-65cf-e0f2-adef-21572db93714.png)

### 2. 1. と同じ要領で、[GameObject]→[3DObject]→[3D Text]を選択する。

### 3. 初めから表示されている[Main Camera]は不要なため、削除する。

最終的には下記のようになってればOK.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/b7cec303-93e4-bb7a-3b25-be3ff611c9c6.png)

# ビルド設定を変更する。
### 1. BuildSetting画面からPlayer設定画面を表示する。
Unity画面上の[File]→[Build Settings]を押下し、[Player Settings]ボタンを押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/0dd48987-af11-1f4b-97cc-c29a2ae9026f.png)

### 2. Other Settingを変更する。
[Player]→[Androidアイコン]→[Other settings]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/27185bbf-7f8d-e806-e8ef-db8c05b89dd2.png)

### 3. Vulkan削除
Vulkanを選択し、[-]ボタンを押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/fdae25c5-6669-043c-5472-5b690177bb72.png)

### 4. Multihreaded Renderingのチェックを外す
カクツキがなくなるらしい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/ff8f6f48-a5d3-2370-c2fd-eb0f9b94f8d8.png)

### 5. ミニマムバージョンとターゲットバージョンを変更する。
使っているAndroidのバージョンに合わせて変更する。(ただし、API level24未満は対応してないとかなんとか)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/ce97f1bf-2c38-561f-c7b2-2fcf10e7885a.png)

### 6. XR Plug-in ManagementのAR Coreにチェック入れる
これをしないと。ARカメラが起動しなかった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/e7033f0f-c743-2440-7b11-e0348320f2ad.png)

# build & 実行
前述の"とりあえずAndroidでUnityアプリを起動してみる。"と同じ操作をすると、
Android端末側でアプリが起動する。
カメラが起動して、カメラ越しに周りを見渡すと、「Hello World」くんがどこかにいるはずです。
(変なところにいます。)

# Hello Worldくんの場所を変える
Hierarchyウインドウの3D Textオブジェクト(New Text)を選択し、Transformのところで位置や大きさが変更できるので、変えてみます。
私の場合、下記のように変更すると、割と近くにいてくれました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696083/6d3b0bed-074d-731c-9f53-e69a2c968c18.png)

### 参考URL
・プロジェクト作成関連
https://qiita.com/gremito/items/a2dd75e9488a51eb4ce9
https://simanezumi1989.hatenablog.com/entry/2020/03/07/154232
https://www.wwwmaplesyrup-cs6.work/entry/2019/09/12/130738
https://note.com/npaka/n/nc24ba42aa710

・エラー時解決
https://qiita.com/nazo_no_otoko/items/51106fe86511b2adb8ad