Attribut för editorkommandon och initiering
↑Kortfattat
Section titled “Kortfattat”Metodattribut kan skapa kommandon i Inspector, menyer i editorn och initieringspunkter. Den viktigaste skillnaden är var metoden körs: i editorn eller i ett byggt spel.
Snabbreferens
Section titled “Snabbreferens”| Attribut | Syfte | Gäller för och kräver |
|---|---|---|
[ContextMenu("Title")] |
Kör en instansmetod från komponentens snabbmeny. | Method · UnityEngine |
[MenuItem("MyMenu/Action")] |
Lägg till ett kommando i Unity Editors menyrad. | Static method · UnityEditor |
[InitializeOnLoadMethod] |
Kör en statisk editormetod efter att Unity startat eller laddat om assemblies. | Static method · UnityEditor |
[RuntimeInitializeOnLoadMethod] |
Anropa en statisk metod under uppstarten av körmiljön. | Static method · UnityEngine |
Så väljer du
Section titled “Så väljer du”[ContextMenu("Title")]
Section titled “[ContextMenu("Title")]”Kör en instansmetod från komponentens snabbmeny.
Använd när: Kör en snabb kontroll eller återställning från en komponent.
Tänk på: Passar för editorhjälpmedel, till exempel återställning och felsökning.
Referens: Unity documentation
[MenuItem("MyMenu/Action")]
Section titled “[MenuItem("MyMenu/Action")]”Lägg till ett kommando i Unity Editors menyrad.
Använd när: Lägg ett återanvändbart verktyg under Tools-menyn i Unity Editor.
Tänk på: Endast editorn. Placera koden i en Editor-mapp eller editorassembly.
Referens: Unity documentation
[InitializeOnLoadMethod]
Section titled “[InitializeOnLoadMethod]”Kör en statisk editormetod efter att Unity startat eller laddat om assemblies.
Använd när: Registrera editorverktyg efter en assembly reload utan användaråtgärd.
Tänk på: Detta är editorinitialisering, inte start av spelet eller en player build.
Referens: Unity documentation
[RuntimeInitializeOnLoadMethod]
Section titled “[RuntimeInitializeOnLoadMethod]”Anropa en statisk metod under uppstarten av körmiljön.
Använd när: Starta runtime-tjänster före eller under sceninitialisering.
Tänk på: Ange RuntimeInitializeLoadType om det spelar roll när metoden körs.
Referens: Unity documentation
Två sorters kommandon
Section titled “Två sorters kommandon”using UnityEngine;
public sealed class ResettableHealth : MonoBehaviour{ [SerializeField] private int health = 100;
[ContextMenu("Restore Full Health")] private void RestoreFullHealth() { health = 100; }}Metoden hör till komponenten och visas i dess snabbmeny i Inspector.
using UnityEditor;using UnityEngine;
public static class ProjectTools{ [MenuItem("Tools/HCSTech/Print Project Path")] private static void PrintPath() { Debug.Log(Application.dataPath); }
[InitializeOnLoadMethod] private static void SetupOnEditorLoad() { // Keep startup logic small and idempotent. }}Placera den andra filen i Editor/ eller en asmdef som endast gäller editorn. Spelbyggen ska inte kompilera referenser till UnityEditor.
using UnityEngine;
public static class RuntimeStartup{ [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] private static void Initialize() { Debug.Log("Runtime initialized before the first scene loads."); }}