(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

現在のビルドターゲットに合わせてBundle IDを自動更新する【Unity】【エディタ拡張】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 5.3.4f1 Personal

はじめに

UnityはPlay settingsからBundle ID(Bundle Identifier)を設定できますが、

各ビルドターゲット(プラットフォーム)ごとに設定はできません。


f:id:kan_kikuchi:20160629135014j:plain


つまりBundle IDが別の場合はプラットフォームを切り替える度に設定する必要がある

ということになり、それはさすがに面倒でミスも起きやすいので、

今回は現在のビルドターゲットに合わせてBundle IDを自動更新するエディタ拡張のご紹介です!


PlayerSettings.bundleIdentifier

まずBundle IDをスクリプトから変更する方法ですが、

PlayerSettings.bundleIdentifierを書き換えるだけです。

PlayerSettings.bundleIdentifier = "jp.bundle.Identifier";


なおPlayerSettingsを使うには、using UnityEditor;が必要です。


EditorUserBuildSettings.activeBuildTargetChanged

次にプラットフォームが切り替わった時に処理を行うには

EditorUserBuildSettings.activeBuildTargetChangedにメソッドを登録するだけです。

EditorUserBuildSettings.activeBuildTargetChanged += OnChangedBuildTarget; 


なお、EditorUserBuildSettingsを使うのにも、using UnityEditor;が必要です。


BundleIdentifierUpdater

上記の二つを使えば、本題の現在のビルドターゲットに合わせてBundle IDを自動更新する

ことができますね。実際のコードが以下のとおり。



BUNDLE_IDENTIFIER_DICTにビルドターゲットごとのBundle IDを登録します。

なお、IDが未登録のビルドターゲットに変わった時は変更しません。


これをEditorディレクトリに入れるだけで、以下の通り!


f:id:kan_kikuchi:20160630134308g:plain


これでミスもなくなりそう!


おわりに

そもそも、AndroidとiOSでBundle IDが別なためにこんな対応をしなくてはいけなくなりました。

特に理由が無ければ、AndroidとiOSのBundle IDは一緒にしといた方がいいかもしれませんね。


参考