本日はUnityの小ネタ枠です。
Unityエディター上で実行するコードを切り替える方法についてです。
Unityエディター上で実行するコードを切り替える
Unityエディター上で実行するコードを切り替える方法は大きく以下の2つあります。
・Application.isEditor
・UNITY_EDITOR
Application.isEditor
Application.isEditorはアプリがUnityエディター上で実行されているかどうかを判定します。
Unityエディター上で実行している場合、本プロパティは true を返します。
docs.unity3d.com
if (Application.isEditor) { // Unityエディター上で動作するコード Debug.Log("On Unity Editor"); } else { // それ以外で動作するコード Debug.Log("Not On Unity Editor"); }
UNITY_EDITOR
UNITY_EDITORはUnityで定義されるスクリプトシンボルです。
Unityエディターで実行されるとき、本スクリプトシンボルが定義されます。
これにより、C#言語のディレクティブを使ってエディター上でのみ有効になるコードを記述できます。
docs.unity3d.com
#if UNITY_EDITOR // Unityエディター上で動作するコード Debug.Log("On Unity Editor"); #else // それ以外で動作するコード Debug.Log("Not On Unity Editor"); #endif
Application.isEditorとUNITY_EDITORの違い
UNITY_EDITORを利用する場合、コードそのものをコンパイルに含めるかどうかを切り替えることができます。
例えば実機上でのみ利用できるライブラリを参照するコードをUNITY_EDITORを利用することでエディター上ではコード自体を無効化できます。
サンプルスクリプト
Unityエディター上とそうでない場合でテキストメッセージを切り替える以下のサンプルスクリプトを作成しました。
・IidefTest.cs
using TMPro; using UnityEngine; public class IidefTest : MonoBehaviour { [SerializeField] private TMP_Text textComponent; [SerializeField] private TMP_Text textComponent2; void Start() { // エディター上でのみ有効なコード if (Application.isEditor) { textComponent.text = "On Unity Editor"; } else { textComponent.text = "Not On Unity Editor"; } // エディター上でのみ有効なコード #if UNITY_EDITOR textComponent2.text = "On Unity Editor"; #else textComponent2.text = "Not On Unity Editor"; #endif } }

Unityエディター実行時

実行ファイルでの実行時
