Unity - 条件付きコンパイルディレクティブ
初めに
条件付きコンパイルディレクティブは、プログラムの特定の部分をコンパイルするかどうかを制御するために使用される Unity の C# の機能です。これを使うことで、特定のプラットフォーム、ビルド設定ごとにコードの一部を条件付きで有効または無効にすることができます。本記事では、条件付きコンパイルディレクティブの仕方を説明します。
Index
条件付きコンパイルディレクティブとは
条件付きコンパイルディレクティブは、プログラムの特定の部分をコンパイルするかどうかを制御するために使用される Unity の C# の機能です。これを使うことで、特定のプラットフォーム、ビルド設定ごとにコードの一部を条件付きで有効または無効にすることができます。
条件付きコンパイルの仕方
基本的な使い方
次のように "#if" や "#endif" などを用いて、条件付きコンパイルをします。
# if UNITY_EDITOR //プラットフォームがUnity Editorの場合 Debug.Log("Unity Editor"); # elif UNITY_IOS //プラットフォームがiOSの場合 Debug.Log("Unity iOS"); # else Debug.Log("Any other platform"); # endif
特定のスクリプトシンボルが定義されている か 定義されていないか によって、コードを選択的にコンパイルに入れたり除外したりすることができます。
スクリプトシンボルは UNITY_EDITOR や UNITY_IOS のようなプラットフォームに関するもの、UNITY_2019_4 のようなエディターバージョンに関するものなどがあります。#define を使うことで、スクリプトシンボルを自分で定義することもできます。#define の使い方はこちら。
"#elif" や "#else" は省略可能です。
スクリプトシンボルを自作する
#define を使うことでスクリプトシンボルを自作することができます。
#define ScriptSymbolTest //スクリプトシンボルの定義 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ApplicationSample : MonoBehaviour { public void onClick() { #if ScriptSymbolTest Debug.Log("スクリプトシンボルのテスト"); #else Debug.Log("ScriptSymbolTestが定義されていない"); #endif } }
スプリプトシンボルをプロジェクト全体に反映させる
"Edit" > "Project Settings" > "Player" を選択します。"Player Settings" ウィンドウが表示されたら、"Scripting Define Symbols" フィールドにスクリプトシンボルを追加することでプロジェクト全体で定義できます。
複数のスクリプトシンボルを定義するには、セミコロンで区切る必要があります。2021.3 バージョンでは、セミコロンで区切らずに入力できるようになりました。Copy Defines ボタンは、使用中のカスタムスクリプトシンボル群を、セミコロンで区切られた値の文字列としてリストからクリップボードにコピーします。