Hoppa till innehåll

Villkorlig kompilering och UNITY_EDITOR

↑

C# kan inkludera eller exkludera kod under kompileringen med preprocessor-direktiv. I Unity används symbolen UNITY_EDITOR när kod kompileras för editorn. Det passar för små editorvillkor men ersätter inte tydliga assemblygränser.

Skriv #if UNITY_EDITOR och avsluta med #endif. #ifeditor är inte ett giltigt C#-direktiv.

Unity C# | EditorOnlyLog.cs
using UnityEngine;
public sealed class EditorOnlyLog : MonoBehaviour
{
private void Start()
{
#if UNITY_EDITOR
Debug.Log("Det här loggas i Unity Editor.");
#endif
}
}
Unity C# | SceneHelper.cs
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
public static class SceneHelper
{
#if UNITY_EDITOR
[MenuItem("Tools/HCSTech/Print project path")]
private static void PrintPath() => Debug.Log(Application.dataPath);
#endif
}

UnityEditor finns inte i vanliga spelbyggen. Lägg större editorverktyg i en särskild Editor-mapp eller assembly.

  1. Avgör om funktionaliteten hör hemma i runtime eller editor.
  2. Använd symboler bara där de förtydligar koden.
  3. Prova både Play mode och en riktig player-build.
  4. Om koden växer, använd asmdef i stället för många spridda villkor.