※これはUnity2019.4.13f1の情報です。
書いてあること
- Unityで画像マーカを読み込むとその絵が動き出す感じのアプリの作りかた。
- Androidで実機ビルドするときの私がおこなったエラー対処法(こちらがメイン)。
- 結果的にコードを書かなかったのでUnity初心者にもやさしいです(多分)。
- 出来上がるものはこちらです。
ほら~~~~~!!!!!Unity様様だぜ https://t.co/STzU6RvxcQ pic.twitter.com/1a8Da1FoDt
— マシュマロン (@maron_puyo) February 26, 2021
※Android特有のエラーみたいなものが含まれますので、特に赤字部分に関してはiOSで実機ビルドしたい方は参考にならないことが含まれていることをご了承ください。
※Android上でARアプリを動かすには、その端末がARCoreに対応している必要があります。自分のスマホが対応しているかどうかはARCore supported devices | Google Developersで確認してください。
背景
とある日の夜中の3時にふとARアプリ作りたいなと思いました。
動く絵本作りたいな~と思ったけど紙媒体をあえて電子媒体を通して見る動機が薄すぎる気がするな…
— マシュマロン (@maron_puyo) February 25, 2021
Unityとかでできないかな
で、検索してみたところUnityのパッケージに「AR Foundation」というものがあると発見しました。
これはやるしかねえ!!
やるぞーーー!!!
まずAR Foundationをインストール。
AR Foundationの使い方を勉強するために、私はこちらのサイトを参考にさせていただきました!
【AR Foundation】マーカーを使ったARを作る - おもちゃラボ (hatenablog.com)
基本はこちらのサイトのとおりに進めて頂ければいいと思います。
しかし、1点だけ注意してください。
インストールするAR FoundationとARCore XR Pluginのバージョンは4.1.1に必ず揃えてください。とんでもない量のエラーと闘う羽目になります。理由は分かりません。
また、こちらのサイトでは3Dモデルをマーカの上に載せるような形ですが、今回私が作りたいのは絵が動いているように見せるアプリです。これを実現するため、絵が動いている動画を用意し、それを画像マーカの上で再生すればよいと考えました。
そのためにはまず動画を再生するためのPlaneを用意します。このPlaneのAdd ComponentからVideo Playerを選択し、そこで流れる動画の設定などを行います(Video Playerの使い方が分からない方は自分でググってみてください)。
そしてAR Session OriginのAR Tracked Image Managerの項目にあるTracked Image PrefabにそのPlaneのPrehab(重要)を設定します。
SceneにPlaneのPrehabが残っていたら削除しましょう。最終的に上のようになっていればOKです。
はい!これで終わりです!!簡単!!Happy!!!さあ!あとはビルドするだけ!!!!!(これで問題なくビルドできた方・できる方はこれ以上この記事を読む必要はありません。お疲れさまでした。)
実機ビルド!!
Androidでの実機ビルド超初心者向け情報
細かい実機ビルドの手順についてはいろいろサイトがあるのでググってみてください。
ここではAndroid実機ビルド超初心者向けの注意点をいくつかまとめています。
- Company NameとProduct Name及びPackage Nameの変更
Unity2019.4.13f1ではCompany NameとProduct Nameを変更すると自動的にPackage Nameも変更されるように感じます。CompanyNameとProductNameを適当に変更したあと、PackageNameも変更されているかチェックしておきましょう。このときPackageNameは「com.(Company Name).(Product Name)」の構文に従ってる必要があります。
あとはドジってAndroid側でUSBデバックモードを有効にするのを忘れたり、UnityのProjectが入っているフォルダのパスに日本語ディレクトリ名が混ざっていたりするとエラーが出ます(Winだと「ドキュメント」とか)。
ここからはARCoreを使うときに気を付けるべき点について述べていきます。ここでとても参考になったサイトはこちらです。AR Foundation 4.0 入門|npaka|note
こちらのページでも述べられているように、以下の3点に注意が必要です。
- Player Settings→Player→Other Settings→Graphic APIsの項目から「Valukan」を削除する
- Minimum API Levelを7.0にする(Package Nameのちょっと下にあります)
- Player Settings→XR Plug-in ManagementのARCoreにチェックを入れる
はい、これで必要な設定が終わり…と思いきや、まだ落とし穴がありました。
— マシュマロン (@maron_puyo) February 26, 2021
先述の設定をすべて行った上でこのエラーが出てきた方は同志ですね!
多分UnityのデフォルトのSDKとかGradleとかを使ってるんじゃないでしょうか。私はそうでした。
ここで役に立ったのはこちらのフォーラム。Resolved - Manifest merger failed with multiple errors; see logs! - Unity Forum
どの道でも先駆者の方のアドバイスはとても有用です。助かる。
要約すると「Gradleをアップデートしよう!もしかしたらSDKとNDKもアップデートする必要があるかもね。」ということです。(SDKとNDKはUnityのデフォルト設定のままでもOKだったので気にする必要なし)
ここの回答者の方が教えてくれているBuild for Android 11 with Unity | ARCore | Google Developersを読んでみましょう。ここにこのエラーを解決するための手段すべてが載っています。英語が分からなくても画像で分かりやすく説明されています。優しい!
!!!完成!!!
おめでとうございます!これでGradleのアップデートが完了、そしてすべての作業工程が終わりました!
さっそくBuild&RunでAndroid上で動かしてみましょう!!
わあ!プログラミングなしでも動く!嬉しい!!自分が天才になったような錯覚すら覚えます!!!
ほらほらほらほら!!!!!!できた!!!!完璧だ!!!!!!
— マシュマロン (@maron_puyo) February 26, 2021
これコード書かなくても実装できるんだぜ?ヤバくないか!!??!!?! pic.twitter.com/z5aT7cUnWY
感想
いざビルドしようと思ったときに、めちゃくちゃエラーが出て泣きました。
Unityにほとんど触らないで生きてきたので、エラー対処するのに2時間はかかりました。苦手な英語を頑張って読みました。正直英語が一番しんどかった感は否めないです。
英語はちゃんとやった方がいいっすよマジで…