UnityCloudBuildで環境ごとにビルドする【シンボル編】
UnityCloudBuildで環境ごとにビルドするではUnityCloudBuildのPre- and post-export methodsを使用して環境ごとにビルドする方法を書きましたが、もう1つシンボルを使った方法をまとめます。
- シンボルとは
- Unityでのシンボルの定義
- 作成したプログラム
- UnityCloudBuildでのビルド
- 最後に
シンボルとは
凄く詳しく知りたい場合はC# プリプロセッサ ディレクティブを見てください。ここでは必要な部分だけ記載します。
C#ではプリプロセッサ ディレクティブを使用して、条件付きコンパイルができます。
#if DEBUG
Console.WriteLine("Debug version");
#elif PRODUCT
// 何か処理
#endif
こういうものです。上記のDEBUG
やPRODUCT
がシンボルと呼ばれるものです。上記のコードの場合、DEBUGだけがシンボルとして定義されていればConsole.WriteLine("Debug version");
が実行されます。PRODUCTだけがシンボルとして定義されていれば// 何か処理
が実行されます。
Unityでのシンボルの定義
Unity EditorではBuild Settings > PlayerSettings > Other Settings内のScripting Define Symbolsで定義することができます。
作成したプログラム
簡易的に、定義したシンボルの設定を読み込み動作するプロジェクトを作成しました。
PRODUCTシンボルを定義して実行した場合は以下のようになります。
環境に対応する設定を取り出す実装は下記の通りです。簡単です。
private Environment GetEnvironmentInner()
{
#if DEVELOP
return _Environments[0];
#elif PRODUCT
return _Environments[1];
#else
return _Environments[0];
#endif
}
UnityCloudBuildでのビルド
UnityCloudBuildで環境ごとにビルドするでは前処理としてスクリプトを用意しましたが、シンボルの場合は不要です。ビルド設定を作成し、カスタム定義を指定するだけです。
UnityCloudBuildで開発用と本番用、2つのビルドターゲットを用意します。
開発用のビルドではカスタム定義にDEVELOPを
本番用のビルドではカスタム定義にPRODUCTを
設定します。
ビルドした結果です。
開発用のビルド
本番用のビルド
最後に
Pre- and post-export methodsを使用する方法と、シンボルを使用する方法どちらもご紹介しました。一概にどちらがいいとは言えません。
メリット | デメリット | |
---|---|---|
Pre- and post-export methods | 誤コミットによる影響が少ない | スクリプトを用意する必要がある |
シンボル | 簡単 | Unity Editorで定義されたScripting Define Symbolsも当然読み込まれるので誤コミットで意図しないビルドになる場合がある |
個人的には使用する環境やビルドの種類が少ないのであればシンボルが簡単でいいんじゃないかと思います。
Discussion