Version: Unity 6.0 (6000.0)
言語 : 日本語
Unity スクリプトシンボルのリファレンス
条件付きコンパイルをテストする

カスタム製スクリプトシンボル

Unity の ビルトインスクリプトシンボル に加えて、独自のカスタムスクリプトシンボルを定義できます。カスタムスクリプトシンボルをどこで定義するかによって、その適用範囲が決まります。カスタムシンボルは、以下の場所で定義できます。

  • アセットファイル では、アクティブな ビルドプロファイル に関係なく、プロジェクト内のすべてのエディターとプレイヤーのコードに適用されるシンボルを定義します。
  • プレイヤー設定 では、特定のプラットフォームまたはそのビルドプロファイルの 1 つがアクティブなときに、すべてのエディターとプレイヤーのコードに適用されるシンボルを定義します。
  • ビルドプロファイル では、特定のビルドプロファイルがアクティブなときに、すべてのエディターとプレイヤーのコードに適用されるシンボルを定義します。
  • コードから は、使用する API に応じて、アクティブなプラットフォームまたは個々のプレイヤービルドに適用されるシンボルを定義します。

プロジェクト全体のカスタムシンボル

応答ファイル アセットを使用して、プロジェクト全体に適用するカスタムスクリプトシンボルを以下のように定義できます。

  1. ファイルに csc.rsp という名前を付けて、プロジェクトの Assets フォルダーのルートに配置します。
  2. 行にスクリプトシンボルを定義します。-define: で始まり、その後にセミコロンで区切られた 1 つまたは複数のスクリプトシンボルが続きます。

Unity はこのファイルを起動時に読み取り、コードをコンパイルする前に適用します。例えば、csc.rsp ファイルに 1 行の -define:UNITY_DEBUG;UNITY_TEST を入力すると、シンボル UNITY_DEBUGUNITY_TEST は、プロジェクト内のすべての C# スクリプトに対してグローバルに定義されたスクリプトシンボルとして追加されます。

:.rsp ファイルへの変更は、Unity がスクリプトを再コンパイルするまで有効になりません。1 つのスクリプトファイルを更新または再インポートすることによって、再コンパイルをトリガーすることができます。

プラットフォームのカスタムシンボル

プラットフォーム固有のカスタムスクリプトシンボルは、以下のように定義できます。

  1. Player 設定 を開きます。
  2. Other Settings > Script Compilation セクションで Scripting Define Symbols リストに移動します。
  3. このリストに新しいスクリプトシンボルを追加するには、+ ボタンを選択し、テキストフィールドにシンボルの名前を入力します。既存のリスト項目を削除するには、- ボタンを使用します。
  4. リストの編集が完了したら、Apply を選択して変更を適用します。Unity は、新しいシンボルを使用してプロジェクト内のスクリプトを再コンパイルします。

:Copy Defines ボタンを押すと、リストに現在表示されているカスタムスクリプトシンボルをセミコロンで区切られた値の文字列としてクリップボードにコピーできます。

ビルドプロファイルのカスタムシンボル

ビルドプロファイルのカスタムスクリプトシンボルは、以下のように定義できます。

  1. Build Profiles ウィンドウ で、シンボルを定義するビルドプロファイルを選択します。
  2. Build Data セクションの Scripting Defines リストに移動します。
  3. このリストに新しいスクリプトシンボルを追加するには、+ ボタンを選択し、テキストフィールドにシンボルの名前を入力します。既存のリスト項目を削除するには、- ボタンを使用します。変更されたリストは、自動的に保存されて適用されます。

:-activeBuildProfile コマンドライン引数 でエディターを起動すると、指定したビルドプロファイルとそのカスタムスクリプトシンボルを起動時から適用できます。

コードから定義されたカスタムシンボル

以下の API を使用してスクリプトシンボルを定義できます。

BuildPlayerOptions.extraScriptingDefinesBuild.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_ASYMBOL_BSYMBOL_C
WindowsBuildProfile2 SYMBOL_ASYMBOL_BSYMBOL_D

この動作は、コード内の #if ディレクティブでテストできます。詳細は、条件付きコンパイルのテスト を参照してください。

追加リソース

Unity スクリプトシンボルのリファレンス
条件付きコンパイルをテストする