Unity

ビルド時にAdMobの設定ファイルがクリアされる対策【Unity】

ビルド時にAdMobの設定ファイルがクリアされる対策【Unity】
記事内に商品プロモーションを含む場合があります

UnityにAdMobプラグインを導入すると、ビルドする度に設定ファイルの中身がクリアされてビルドエラーになる問題に遭遇しました。

v6.0.0から発生しているようで、最新のv6.1.1でも治っていません。

対象のファイル GoogleMobileAdsSettings.cs はdll化されていなかったので中身を見たところ、アセットを再生成しているのが原因でした。

ビルド処理の中でこのInstanceプロパティを利用しています。

Unityを再起動した時や何かしらスクリプトを書き換えてコンパイルが走った後はキャッシュ(instanceフィールド)がnullになるのでここを通ります。

よって以下のように書き換えれば生成済みのアセットが使われるので、クリアされることはありません。

ただ今後もすぐ修正されなかったとしてプラグインをバージョンアップする度に書き換えるのも面倒なので、以下のようなスクリプトを作っておきました。

InitializeOnLoad(Unity起動後・コンパイル直後)のタイミングでキャッシュに値を入れています。プロジェクトのどこでもいいのでEditorフォルダを作って入れておけば動作します。

(追記)CloudBuild等でUnityを起動せずにビルドした時はキャッシュに値が入らないので、ビルド前処理も追加しました。