はじめに
ARアプリを作りたいなと思ってUnityで環境構築し始めたら、引っかかることがちょこちょこあったので、備忘として残します。
Androidのカメラに「Hello World」を表示するところまでの手順です。
サンプル画像は下記のような感じ。
ここまではノーコーディングでできます!
開発環境
- 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インストール時は両方インストールする方が良いです。
※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"を選択し、作成ボタン押下。
3. 開発画面が表示されるまで待つ
とりあえずAndroidでUnityアプリを起動してみる。
まずは、何もせずにAndroid向けにアプリをビルド→Androidにインストールして、起動するか確認してみる。(何が問題でエラーになったかわかるようにするため)
1. BuildSetting画面を表示する。
Unity画面上の[File]→[Build Settings]を押下
2. Android用にビルドする。
[Android]を選択し、[Switch Platform]ボタンを押下
3. Android端末を開発者モードをONにして、USBデバッグを有効にする。
この辺を参考。
https://sp7pc.com/google/android/39763
4. PCとAndroidを接続
Android端末とPCをUSBで接続すると、Android側にUSB接続モードを選択する画面が表示されるので、「ファイル転送」を選択しておく。
5. Build & 実行する。
Unity側で[Build And Run]が押せるようになるので、押下する。
実行ファイルの保存先を聞かれるので、任意のフォルダに任意の名前で保存する。
(今回は"test"という名前にしました)
なお、未確認ですが、任意のフォルダについては、フォルダパスに全角文字が入っていない方が良いかもしれません。(エラー発生時はフォルダを変えよ。という書き込みをいくつか見たので)
Android側でインストールするか?と聞かれるので、インストールすると勝手に実行される。
Unity に AR開発用のPackageをインストールする。
1.PackageManagerを表示する。
2.Packageをインストールする。
下記5つのpackageをインストールする。
・AR Foundation
・ARCore XR Plugin
・ARKit XR Plugin
・Multiplayer HLAPI
・XR Legacy Input Helpers
- インストール方法は、まず表示PackageをUnity Registryにする。
-
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
AR表示用のオブジェクトを追加する。
下記の図の通り、HierarchyウインドウのSampleSceneを右クリックし、
1. [GameObject]→[XR]から下記2つを選択する。
・AR Session Origin
・AR Session
2. 1. と同じ要領で、[GameObject]→[3DObject]→[3D Text]を選択する。
3. 初めから表示されている[Main Camera]は不要なため、削除する。
ビルド設定を変更する。
1. BuildSetting画面からPlayer設定画面を表示する。
Unity画面上の[File]→[Build Settings]を押下し、[Player Settings]ボタンを押下する。
2. Other Settingを変更する。
[Player]→[Androidアイコン]→[Other settings]を選択
3. Vulkan削除
4. Multihreaded Renderingのチェックを外す
5. ミニマムバージョンとターゲットバージョンを変更する。
使っているAndroidのバージョンに合わせて変更する。(ただし、API level24未満は対応してないとかなんとか)
6. XR Plug-in ManagementのAR Coreにチェック入れる
build & 実行
前述の"とりあえずAndroidでUnityアプリを起動してみる。"と同じ操作をすると、
Android端末側でアプリが起動する。
カメラが起動して、カメラ越しに周りを見渡すと、「Hello World」くんがどこかにいるはずです。
(変なところにいます。)
Hello Worldくんの場所を変える
Hierarchyウインドウの3D Textオブジェクト(New Text)を選択し、Transformのところで位置や大きさが変更できるので、変えてみます。
私の場合、下記のように変更すると、割と近くにいてくれました。
参考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