tomatoaiu の Tech Blog

プログラミングやツールについてのまとめブログ

【Unity + ARCore v1.15】Product Nameがビルドする度に変わってしまう場合の対処法

やりたいこと

Player Settings... の Product Name を変更したのに、ビルドされたスマホのアプリ名をみると HelloAR U3Dのような Google ARCore Sample アプリ の名前に変わってしまう。これを対処したい。

環境

  • 【Unity】: Version 2019.2.21f1 Personal
  • 【Google AR Core】: v1.15

原因

/Assets/GoogleARCore/SDK/Scripts/Editor/ExamplePreprocessBuild.cs の中で自動的にプロダクトネームを変更しているため。

ExamplePreprocessBuild.cs 内の以下のコードの中の SceneGuid を HelloAR シーンとでハードコーディングしている。それによりHelloAR シーン内でちょこっと編集したのでプロダクト名を Player Settings... から変えて、これでプロダクト名が変わったはずだと思っても、HelloAR U3Dという名前に必ず変わる。

_AddExampleScene(new ExampleScene()
    {
        ProductName = "HelloAR U3D",
        PackageName = "com.google.ar.core.examples.unity.helloar",
        SceneGuid = "e6a6fa04348cb45c9b0221eb19c946da",
        IconGuid = "36b7440e71f344bef8fca770c2d365f8"
    });

解決方法

1 新しいシーンを新規作成する
2 <先ほど作成したシーンの名前>.unity.meta というファイルをテキストエディタで開く
- <先ほど作成したシーンの名前>.unity.meta というファイルは、新規シーンのファイルと同じフォルダの中に自動的に生成される
3 開いたファイルの guid を取得する

開いたファイルの中身は大体以下のようになっている。なので、3fa2cad52fcf042948794722639963d4 という文字列をクリップボードに貼っておく(コピーしておく)。

fileFormatVersion: 2
guid: 3fa2cad52fcf042948794722639963d4
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 

4 /Assets/GoogleARCore/SDK/Scripts/Editor/ExamplePreprocessBuild.cs を開く
5 新しく _AddExampleScene() 関数で ExampleSceneの新規インスタンスを生成するコードを追加

大体、39行目の次の行に以下のようなコードを記入。

_AddExampleScene(new ExampleScene()
    {
        ProductName = "<ここに新規プロダクト名>",
        PackageName = "com.google.ar.core.examples.unity.helloar",
        SceneGuid = "<ここにコピーしておいた guid をペースト>",
        IconGuid = "36b7440e71f344bef8fca770c2d365f8"
    });

6 ExamplePreprocessBuild.csを上書き保存
7 Build Settings > Scenes In Build に 新規シーンをドラッグ&ドロップ
- 新規シーンのみにチェックを入れておくと安全
8 Build And Run

参考

ARCoreとUnityではじめるARアプリ開発

ARCoreとUnityではじめるARアプリ開発