Version: Unity 6.0 (6000.0)
言語 : 日本語
Unity での条件付きコンパイル
カスタム製スクリプトシンボル

Unity スクリプトシンボルのリファレンス

プラットフォームシンボル

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 では、現在使用している Unity エディターのバージョンに基づき、特定のスクリプトシンボルが自動的に定義されます。

バージョン番号 X.Y.Z (例えば 2019.4.14) の場合、Unity は 3 つのグローバルなスクリプトシンボルを以下の形式で公開します。UNITY_XUNITY_X_YUNITY_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 と同等です。

追加リソース

Unity での条件付きコンパイル
カスタム製スクリプトシンボル