AndroidアプリでARしてみる

# この記事について
~~全く埋まらない社内アドベントカレンダーを埋めるべく、~~UnityでARアプリを作成しました。

# バージョン
参考ページよりバージョンを上げるとエラーが多すぎて対応できなかったので、参考ページとバージョンを合わせています。
- Unity 2019.4.34f1
- ARCore SDK for Unity v1.16.0

# 作ってみる
## プロジェクト作成
- 3Dテンプレートでプロジェクトを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/de8d116a-71f8-62de-6a6d-8b3238a297b9.png)

## 必要パッケージのインストール
[Window] -> [Package Manager]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/a4641992-c72f-c7fb-cafc-a4926e571a09.png)

`Multiplayer HLAPI`と`XR Legacy Input Helper`を検索してインストールします。
Multiplayer HLAPIは複数バージョンあるようですが、とりあえず1.0.8をインストールしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/9d115e23-dfd9-52c7-9d31-0e4e27c6c206.png)

## ARCoreパッケージのインストール
[Assets] -> [Import Package]を選択し、ARCoreパッケージをインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/fa49ee0c-8d3c-dc79-442c-9c88ff929477.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/43fc7199-fccb-b1cb-7320-03c557c64f6c.png)

## サンプルシーンを開く
Projectタブで[GoogleARCore] -> [Examples] -> [HelloAR] -> [Scenes]の中にある`HelloAR`を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/c09aca19-fca1-fd69-d58d-82f3229c1939.png)

## ビルド設定
[File] -> [Build Settings]でビルド設定を開く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/7dd42315-4fb6-99a1-48e8-ce1ad9f08935.png)

Androidを選択して、[Switch Platform]を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/9e7413aa-473d-d9fe-335b-730085ce6297.png)

[Player Settings]を選択して、設定を行う。

[Player]を選択し、[Androidタブ（ドロイド君のマーク）] -> [Other Settings]を開く
[Graphics APIs]から`Vulkan`を削除（選択して、[－]をクリック）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/247fee7c-6940-df9f-0704-55de202c119b.png)

[Minimum API Level]を[Android 7.0 Nougat]に切り替える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/7af41e88-0478-4be7-664c-6867e0c53e41.png)

[XR Setting]を開いて、[ARCore Supported]にチェックを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/c64d55fe-dc90-ab55-7d58-e1b001cbde83.png)

## ビルド
ビルドして、apkファイルをAndroidにコピーする

# 結果
アプリを起動したらなんか出てきました。
![Screenshot_20211228-174333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/c5c7e025-2593-d4c2-1c74-5fba123db78a.png)

**Σ(ﾟДﾟ)**
![Screenshot_20211228-174339.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/7bb7501b-3880-9aea-b2f9-f923288b2cdf.png)

**Unityでビルドできたのでとりあえず良し！！！**

# ハマったところ
## Unity 2021.2.7f1でビルドすると失敗する
そもそも、`Multiplayer HLAPI`と`XR Legacy Input Helper`がパッケージマネージャーからインストールできない。
[プロジェクト名] -> [Packages]内のmanifestを修正してインストールしてみたが、作業中に色々とエラーが多発して対処が難しい~~(**面倒くさい**)~~ので、Unityのバージョンは安定版にしました。

マニフェスト修正は以下を参考にしました。
- https://docs.unity3d.com/ja/2019.4/Manual/com.unity.xr.legacyinputhelpers.html
- https://docs.unity3d.com/ja/2019.4/Manual/com.unity.multiplayer-hlapi.html
- https://qiita.com/ELIXIR/items/4874e491bbbbce0b88ac

## [プロジェクト名] -> [Packages] -> manifestを修正するとプロジェクトを開くときにエラーが出る
JSONの書き方間違えました。

## Unity 2019.4.34f1でプロジェクトを作成したのに、Unity 2021.2.7f1と挙動が変わらない
プロジェクト作成時にバージョンを忘れました。

## Unity 2021.2.7f1だと、Graphics APIが任意に変更できない？
Unity 2021.2.7f1だと、**デフォルトで Player Settings の「Auto Graphics API」にチェックが付いてる**

## apkがインストールできない
信頼できないアプリをインストールできるようにしましょう（端末によって若干操作が異なる）

# 参考資料
- https://note.com/ak_schweitzer/n/n0d4c90360d2e
- https://github.com/google-ar/arcore-unity-sdk/releases