Unity では、オーサリングやビルドの対象プラットフォームに基づいて、特定のシンボルが自動的に定義されます。これらは以下の通りです。
| Define | 機能 |
|---|---|
| UNITY_EDITOR | ゲームコードから Unity エディターのスクリプトを呼び出すためのスクリプトシンボル |
| UNITY_EDITOR_WIN | Windows 用エディターコードのためのスクリプトシンボル |
| UNITY_EDITOR_OSX | macOS 用エディターコードのためのスクリプトシンボル |
| UNITY_EDITOR_LINUX | Linux 用エディターコードのためのスクリプトシンボル |
| UNITY_EMBEDDED_LINUX | 埋め込まれた Linux 用のスクリプトシンボル |
| UNITY_QNX | QNX 用のスクリプトシンボル |
| UNITY_STANDALONE_OSX | 特に macOS (Univeral、PPC、Intel のアーキテクチャを含む) のコードをコンパイル/実行するためのスクリプトシンボル |
| UNITY_STANDALONE_WIN | Windows スタンドアロンアプリケーションのコードをコンパイル/実行するための スクリプトシンボル |
| UNITY_STANDALONE_LINUX | Linux スタンドアロンアプリケーションのコードをコンパイル/実行するためのスクリプトシンボル |
| UNITY_STANDALONE | あらゆるスタンドアロンプラットフォーム (Mac OS X, Windows, Linux) のコードをコンパイル/実行するためのスクリプトシンボル |
| UNITY_SERVER | Dedicated Server (macOS、Windows、Linux) のコードをコンパイル/実行するためのスクリプトシンボル |
| UNITY_IOS | iOS プラットフォーム用のコードをコンパイル/実行するためのスクリプトシンボル |
| UNITY_ANDROID | Android プラットフォーム用のスクリプトシンボル |
| UNITY_TVOS | Apple TV プラットフォーム用のスクリプトシンボル |
| UNITY_VISIONOS | VisionOS プラットフォーム用のスクリプトシンボル |
| UNITY_WSA | ユニバーサル Windows プラットフォーム用のスクリプトシンボル |
| UNITY_WSA_10_0 | ユニバーサル Windows プラットフォーム用のスクリプトシンボル |
| UNITY_WEBGL | ウェブ用のスクリプトシンボル |
| UNITY_ANALYTICS | ゲームコードから Unity Analytics メソッドを呼び出すためのスクリプトシンボル |
| UNITY_ASSERTIONS | アサーション制御プロセスのスクリプトシンボル |
| UNITY_64 | 64 ビットプラットフォーム用のスクリプトシンボル実際には、これを 使用すべきではありません 。すべての 64 ビットアーキテクチャでは動作しないから、また、任意のプラットフォームの異なる CPU アーキテクチャが同じコンパイル済みアセンブリを共有することがあるからです。アーキテクチャに基づいてコードを条件付きで実行するには、IntPtr.Size をチェックする標準の if ステートメントを使用します。IntPtr.Size は、32 ビットプロセスでは 4、64 ビットプロセスでは 8 です。例については、ディレクティブの代替手段 を参照してください。 |
Unity では、現在使用している Unity エディターのバージョンに基づき、特定のスクリプトシンボルが自動的に定義されます。
バージョン番号 X.Y.Z (例えば 2019.4.14) の場合、Unity は 3 つのグローバルなスクリプトシンボルを以下の形式で公開します。UNITY_X、UNITY_X_Y、UNITY_X_Y_Z。
以下は Unity 2019.4.14 で公開されているスクリプトシンボルの例です。
| Define | 機能 |
|---|---|
| UNITY_2019 | Unity 2019 リリースバージョンのスクリプトシンボルです。すべての 2019.Y.Z リリースで公開されています。 |
| UNITY_2019_4 | Unity 2019.4 メジャーバージョンのスクリプトシンボルです。すべての 2019.4.Z リリースで公開されています。 |
| UNITY_2019_4_14 | Unity 2019.4.14 マイナーバージョンのスクリプトシンボル |
コードスニペットのセクションのコンパイルや実行に必要な Unity の最も古いバージョンに基づいて、選択的にコードをコンパイルすることもできます。前述の (X.Y) と同じバージョン形式に従って、Unity は、UNITY_X_Y_OR_NEWER の形式でグローバルな #define を公開しており、これをその目的で使用できます。
その他、Unity が定義するシンボルは以下の通りです。
| Define | 機能 |
|---|---|
| CSHARP_7_3_OR_NEWER | C# 7.3をサポートするスクリプトをビルドするときに定義されます。 |
| ENABLE_MONO | Mono のスクリプトバックエンド #define |
| ENABLE_IL2CPP | IL2CPP のスクリプトバックエンド #define |
| ENABLE_VR | ターゲットビルドプラットフォームが VR をサポートする場合に定義されます。VR が現在有効になっている、または VR のサポートに必要なプラグインとパッケージがインストールされていることを意味するものではありません。 |
| NET_2_0 | Mono と IL2CPP の .NET 2.0 API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NET_2_0_SUBSET | Mono と IL2CPP の .NET 2.0 Subset API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NET_LEGACY | Mono と IL2CPP の .NET 2.0 か NET 2.0 Subset API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NET_4_6 | Mono と IL2CPP の .NET 4.x API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NET_STANDARD_2_0 | Mono と IL2CPP の .NET Standard 2.0 API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NET_STANDARD_2_1 | Mono と IL2CPP の .NET Standard 2.1 API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NET_STANDARD | Mono と IL2CPP の .NET Standard 2.1 API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NETSTANDARD2_1 | Mono と IL2CPP の .NET Standard 2.1 API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| NETSTANDARD | Mono と IL2CPP の .NET Standard 2.1 API 互換性レベル向けにスクリプトをビルドするときに定義されます。 |
| ENABLE_WINMD_SUPPORT | Windows ランタイムのサポートが IL2CPP で有効にされているときに定義されます。詳細については、Windows ランタイムのサポート を参照してください。 |
| ENABLE_INPUT_SYSTEM | Player Settings で Input System パッケージが有効になっている場合に定義されます。 |
| ENABLE_LEGACY_INPUT_MANAGER | Player Settings で古い Input Manager が有効になっている場合に定義されます。 |
| DEVELOPMENT_BUILD |
Development Build オプションを有効にしてビルドされたプレイヤーでスクリプトが実行されている場合に定義されます。 この定義は、ビルド時に開発ビルドオプションが有効になっていたかどうかのみを反映します。スクリプトが開発ビルドモードで実行されているかどうかを確認するには、Debug.isDebugBuild を使用します。ほとんどのプラットフォームでは、プロジェクトをリビルドせずに開発ビルドと非開発ビルドを切り替えられるため、 __DEVELOPMENT\_BUILD__ では現在開発ビルドで実行されているかどうかを判断できません。ただし、一部のプラットフォームでは、Unity はエディターでの開発ビルドと非開発ビルドの切り替えをサポートしておらず、ビルドの完了後に切り替える必要があります。例えば、Windows では、Create Visual Studio solution オプションを選択して、Visual Studio で開発ビルドを行うか、非開発ビルドを行うかを選択できます。Visual Studio で切り替えてもスクリプトは再コンパイルされないため、スクリプト定義は再評価されません。ライブゲームビルドのデバックのために、ゲームビルドの UnityPlayer.dll を開発ビルドのものとスワップして、最終ゲームビルドから開発ビルドに切り替えることもできます。 |
| UNITY_CLOUD_BUILD | Unity Build Automation でプロジェクトをビルドするときに定義されます。 |
ノート: DEBUG シンボルは C# で事前定義されており、Unity でディレクティブ #if DEBUG を使用することは #if UNITY_EDITOR || DEVELOPMENT_BUILD と同等です。