この記事でのバージョン
Unity 5.3.4f1 Personal
はじめに
UnityはPlay settingsからBundle ID(Bundle Identifier)を設定できますが、
各ビルドターゲット(プラットフォーム)ごとに設定はできません。
つまり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ディレクトリに入れるだけで、以下の通り!
これでミスもなくなりそう!
おわりに
そもそも、AndroidとiOSでBundle IDが別なためにこんな対応をしなくてはいけなくなりました。
特に理由が無ければ、AndroidとiOSのBundle IDは一緒にしといた方がいいかもしれませんね。
参考