Unity の ビルトインスクリプトシンボル に加えて、独自のカスタムスクリプトシンボルを定義できます。カスタムスクリプトシンボルをどこで定義するかによって、その適用範囲が決まります。カスタムシンボルは、以下の場所で定義できます。
応答ファイル アセットを使用して、プロジェクト全体に適用するカスタムスクリプトシンボルを以下のように定義できます。
csc.rsp という名前を付けて、プロジェクトの Assets フォルダーのルートに配置します。-define: で始まり、その後にセミコロンで区切られた 1 つまたは複数のスクリプトシンボルが続きます。Unity はこのファイルを起動時に読み取り、コードをコンパイルする前に適用します。例えば、csc.rsp ファイルに 1 行の -define:UNITY_DEBUG;UNITY_TEST を入力すると、シンボル UNITY_DEBUG と UNITY_TEST は、プロジェクト内のすべての C# スクリプトに対してグローバルに定義されたスクリプトシンボルとして追加されます。
注:.rsp ファイルへの変更は、Unity がスクリプトを再コンパイルするまで有効になりません。1 つのスクリプトファイルを更新または再インポートすることによって、再コンパイルをトリガーすることができます。
プラットフォーム固有のカスタムスクリプトシンボルは、以下のように定義できます。
注:Copy Defines ボタンを押すと、リストに現在表示されているカスタムスクリプトシンボルをセミコロンで区切られた値の文字列としてクリップボードにコピーできます。
ビルドプロファイルのカスタムスクリプトシンボルは、以下のように定義できます。
注:-activeBuildProfile コマンドライン引数 でエディターを起動すると、指定したビルドプロファイルとそのカスタムスクリプトシンボルを起動時から適用できます。
以下の API を使用してスクリプトシンボルを定義できます。
PlayerSettings.SetScriptingDefineSymbolsBuildPlayerOptions.extraScriptingDefinesBuild.Player.ScriptCompilationSettings-extraScriptingDefines
BuildPlayerOptions.extraScriptingDefines と Build.Player.ScriptCompilationSettings-extraScriptDefines はプレイヤービルドにのみ適用されます。エディタースクリプトに適用するスクリプトシンボルを定義するには、PlayerSettings.SetScriptingDefineSymbols を使用します。これは、Player 設定 でプラットフォーム固有のスクリプトシンボルを設定するコードに相当するものです。
重要: SetScriptingDefineSymbols を使用してコードから作成したシンボルは、エディターがコントロールを取り戻してスクリプトを再コンパイルするまで有効になりません。例えば、エディタースクリプトで SetScriptingDefineSymbols を使用してスクリプトシンボルを作成してから、次の行で BuildPipeline.BuildPlayer を呼び出すと、前の行で作成した新しいシンボルはまだ有効になっていません。この場合、BuildPlayer の実行の一部として実行されるエディターコードは、新しいシンボルなしで実行され、プレイヤーは意図したとおりにビルドされない可能性があります。
エディターをバッチモードで実行する場合、スクリプトの再コンパイルをトリガーするメカニズムはありません。バッチモードで実行するエディターで、特定のシンボルを定義する必要がある場合は、csc.rsp アセットファイルを使用 して、シンボルが起動時から適用されるようにする必要があります。
カスタムスクリプトシンボルを複数の場所で定義すると、Unity は現在のビルド設定に適用されるすべてのシンボルを集約します。シンボルは上書きされるのではなく、プロジェクト全体のシンボル (csc.rsp から) + プラットフォーム固有のシンボル (Player 設定から) + ビルドプロファイルのシンボル (ビルドデータから) というように、各範囲から継承されます。プラットフォームのシンボルとビルドプロファイルのシンボルは、アクティブなビルドプロファイルと一致する場合にのみ追加されます。
例えば、以下の場所に以下のカスタムスクリプトシンボルが定義されているとします。
| 保存場所 | 定義されたシンボル |
|---|---|
csc.rsp |
SYMBOL_A |
| Windows の Player 設定 | SYMBOL_B |
| WindowsBuildProfile1 | SYMBOL_C |
| WindowsBuildProfile2 | SYMBOL_D |
以下の表は、この設定例で複数のビルドプロファイルがアクティブな場合に、エディターとプレイヤーのコードに対してどのシンボルがアクティブなのかを示しています。
| アクティブなビルドプロファイル | アクティブなシンボル |
|---|---|
| Android | SYMBOL_A |
| Windows | 『SYMBOL_A』(SYMBOL_B) |
| WindowsBuildProfile1 |
SYMBOL_A、SYMBOL_B、SYMBOL_C
|
| WindowsBuildProfile2 |
SYMBOL_A、SYMBOL_B、SYMBOL_D
|
この動作は、コード内の #if ディレクティブでテストできます。詳細は、条件付きコンパイルのテスト を参照してください。