関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2015.11.05UE4UE/ C++
今回は、最近発見したちょっと便利な .Build.cs の使用方法をご紹介したいと思います。
プログラマ向けの内容になります。
例えば、
などといったケースは、ゲーム開発ではよくあることと思います。
こういった場合、C++では #ifdef などのプリプロセッサ命令を使うのが一般的です。
通常のC++プロジェクトでの開発ではVisualStudioなどのプロジェクト設定に定義を記述し、目的ごとに構成を用意するところですが、UE4のC++プロジェクトでは基本的には「Development Editor」「Shipping」などの、予め用意された構成を使用することになります。
UE4プロジェクトの場合は、プロジェクト設定に記述する代わりに、モジュールの「.Build.cs」ファイルに記述することで、define定義を追加することが出来ます。
「.Build.cs」ファイル内で、「Definitions」という配列変数に要素を追加することで、そのモジュール内で指定したdefineが定義された状態でC++ビルドが実行されます。
Definitions.Add(“MY_LOCAL_TEST”); |
#ifdef MY_LOCAL_TEST |
これだけでは、定義を変更するためには、毎回「.Build.cs」ファイルを書き換える必要があり、それほどのメリットは感じられません。
しかし、「.Build.cs」は単なる設定ファイルではなく、実行されるC#言語のコードです。
つまり、C#言語の機能による動的な変更が可能であるということです。
例えば、下記のような使い方が可能です。
if(System.Environment.GetEnvironmentVariable(“BUILD_OPTION_XXX”) == “1”) { Definitions.Add(“BUILD_XXX”); } |
これで、環境変数によって、目的のビルド環境のみで有効になるようなコードを記述することが出来ます。
他にも、System.Environment.UserName を用いて個人環境のみで有効なデバッグコードを実装したり、外部テキストファイルに独自の設定を記述して読み込み、反映させるようなことも可能です。
Jenkins等でバッチビルドする場合には、コンソールコマンドの「set」と組み合わせれば、簡単にビルドを切り替えられるようになります。
ある程度以上の規模のプロジェクトでは、とても便利に使えるテクニックだと思いますので、是非お試し下さい。