Attribut för Inspector och serialisering
↑Kortfattat
Section titled “Kortfattat”De här attributen påverkar vad Unity sparar och hur fält visas i Inspector. Det är två olika frågor: ett fält kan serialiseras men döljas, och att visas i Inspector innebär inte automatiskt att all kod kan styra det korrekt.
Snabbreferens
Section titled “Snabbreferens”| Attribut | Syfte | Gäller för och kräver |
|---|---|---|
[SerializeField] |
Seriekoda ett privat fält och visa det i Inspector. | Field · UnityEngine |
[HideInInspector] |
Dölj ett serialiserat fält i Inspector utan att nödvändigtvis ta bort sparad data. | Field · UnityEngine |
[NonSerialized] |
Stoppa serialisering av ett publikt fält med .NET-attributet. | Field · System |
[FormerlySerializedAs("oldName")] |
Behåll fältvärden i serialiserad data när ett fält byter namn. | Field · UnityEngine.Serialization |
[Header("Title")] |
Visa en rubrik ovanför ett fält i Inspector. | Field · UnityEngine |
[Space] / [Space(n)] |
Lägg till vertikalt mellanrum före ett fält i Inspector. | Field · UnityEngine |
[Tooltip("…")] |
Visa hjälptext när man håller muspekaren över ett fälts namn. | Field · UnityEngine |
[Range(min, max)] |
Visa ett skjutreglage för ett int- eller float-fält i Inspector. | Field · UnityEngine |
[Min(value)] |
Ange ett minimivärde för ett int- eller float-fält i Inspector. | Field · UnityEngine |
[Max(value)] |
Inte ett generellt inbyggt fältattribut i UnityEngine för Unity 6. | Optional package or custom drawer |
[TextArea(min, max)] |
Visa en textruta med flera rader och ett höjdintervall i Inspector. | Field · UnityEngine |
[Multiline] |
Visa ett strängfält i en flerradig textruta. | Field · UnityEngine |
[Delayed] |
Bekräfta ändringar i text- eller sifferfält vid Enter eller när fokus lämnas. | Field · UnityEngine |
[SerializeReference] |
Serialisera hanterade objektreferenser, även vissa polymorfa objektgrafer. | Field · UnityEngine |
[InspectorName("Name")] |
Ändra etiketten som visas i Inspector. | Field or enum member · UnityEngine |
[ContextMenuItem("Title", "Method")] |
Lägg till ett snabbmenyval på ett fält som anropar en metod. | Field · UnityEngine |
[NonReorderable] |
Stäng av möjligheten att dra och ändra ordningen i en lista eller array i Inspector. | Field · UnityEngine |
Så väljer du
Section titled “Så väljer du”[SerializeField]
Section titled “[SerializeField]”Seriekoda ett privat fält och visa det i Inspector.
Använd när: Visa ett inställningsvärde i Inspector utan att göra fältet publikt.
Tänk på: Typen måste uppfylla Unitys serialiseringsregler. En C#-property blir inte automatiskt synlig.
Referens: Unity documentation
[HideInInspector]
Section titled “[HideInInspector]”Dölj ett serialiserat fält i Inspector utan att nödvändigtvis ta bort sparad data.
Använd när: Behåll sparade värden som inte ska ändras i den vanliga Inspectorn.
Tänk på: Att dölja ett fält stoppar inte serialisering och skyddar inte hemlig information.
Referens: Unity documentation
[NonSerialized]
Section titled “[NonSerialized]”Stoppa serialisering av ett publikt fält med .NET-attributet.
Använd när: Håll en publik runtime-cache utanför scen- och prefabdata.
Tänk på: Använd [System.NonSerialized], inte ett attribut från UnityEngine.
Referens: Unity documentation
[FormerlySerializedAs("oldName")]
Section titled “[FormerlySerializedAs("oldName")]”Behåll fältvärden i serialiserad data när ett fält byter namn.
Använd när: Byt namn på ett fält som redan används i scener och prefabs.
Tänk på: Ange det tidigare fältnamnet och testa äldre scener, prefabs och tillgångar.
Referens: Unity documentation
[Header("Title")]
Section titled “[Header("Title")]”Visa en rubrik ovanför ett fält i Inspector.
Använd när: Dela upp inställningar för rörelse, ljud eller spelmekanik visuellt.
Tänk på: Ändrar bara utseendet i Inspector och skapar ingen ny datastruktur.
Referens: Unity documentation
[Space] / [Space(n)]
Section titled “[Space] / [Space(n)]”Lägg till vertikalt mellanrum före ett fält i Inspector.
Använd när: Lägg lite mellanrum mellan olika grupper av inställningar.
Tänk på: Använd inte många Space-attribut som ersättning för tydlig gruppering.
Referens: Unity documentation
[Tooltip("…")]
Section titled “[Tooltip("…")]”Visa hjälptext när man håller muspekaren över ett fälts namn.
Använd när: Förklara enheter eller ovanliga inställningar utan att göra etiketten lång.
Tänk på: Bra för enheter och förväntade värden, men ersätter inte API-dokumentation.
Referens: Unity documentation
[Range(min, max)]
Section titled “[Range(min, max)]”Visa ett skjutreglage för ett int- eller float-fält i Inspector.
Använd när: Välj hastighet, volym eller andra numeriska värden med ett avgränsat reglage.
Tänk på: Detta styr inmatning i Inspector, inte godtyckliga tilldelningar i körande kod.
Referens: Unity documentation
[Min(value)]
Section titled “[Min(value)]”Ange ett minimivärde för ett int- eller float-fält i Inspector.
Använd när: Undvik negativa eller nollvärden när du redigerar antal och storlekar.
Tänk på: Validera eller begränsa körvärden separat.
Referens: Unity documentation
[Max(value)]
Section titled “[Max(value)]”Inte ett generellt inbyggt fältattribut i UnityEngine för Unity 6.
Använd när: Använd bara attributet om det installerade paketet verkligen innehåller det.
Tänk på: Vissa paket definierar ett liknande attribut. Kontrollera paketet och namnrymden innan användning.
Referens: Unity documentation
[TextArea(min, max)]
Section titled “[TextArea(min, max)]”Visa en textruta med flera rader och ett höjdintervall i Inspector.
Använd när: Låt designers skriva beskrivningar och dialog över flera rader.
Tänk på: Parametrarna styr antal synliga rader, inte strängens maxlängd.
Referens: Unity documentation
[Multiline]
Section titled “[Multiline]”Visa ett strängfält i en flerradig textruta.
Använd när: Gör ett kort flerradigt textfält smidigare i Inspector.
Tänk på: För längre text eller justerbar höjd kan TextArea passa bättre.
Referens: Unity documentation
[Delayed]
Section titled “[Delayed]”Bekräfta ändringar i text- eller sifferfält vid Enter eller när fokus lämnas.
Använd när: Undvik att reagera på varje knapptryckning när numeriska värden redigeras.
Tänk på: Påverkar hur man redigerar i Inspector, inte tilldelning i skript.
Referens: Unity documentation
[SerializeReference]
Section titled “[SerializeReference]”Serialisera hanterade objektreferenser, även vissa polymorfa objektgrafer.
Använd när: Lagra olika konkreta implementationer bakom ett interface i en hanterad objektgraf.
Tänk på: Används inte för UnityEngine.Object-referenser. Konkreta typer måste stödjas av serialiseringen.
Referens: Unity documentation
[InspectorName("Name")]
Section titled “[InspectorName("Name")]”Ändra etiketten som visas i Inspector.
Använd när: Visa ett användarvänligt namn utan att ändra C#-identifieraren.
Tänk på: C#-identifieraren och det serialiserade fältnamnet ändras inte.
Referens: Unity documentation
[ContextMenuItem("Title", "Method")]
Section titled “[ContextMenuItem("Title", "Method")]”Lägg till ett snabbmenyval på ett fält som anropar en metod.
Använd när: Erbjud ett tillfälligt återställningskommando för ett visst fält.
Tänk på: Det är ett snabbmenyval för ett fält, inte en synlig knapp hela tiden.
Referens: Unity documentation
[NonReorderable]
Section titled “[NonReorderable]”Stäng av möjligheten att dra och ändra ordningen i en lista eller array i Inspector.
Använd när: Skydda en samling med viktig ordning mot oavsiktlig omdragning i Inspector.
Tänk på: Samlingen kan fortfarande ändras från kod.
Referens: Unity documentation
Inspector före och efter
Section titled “Inspector före och efter”Detta är en förenklad illustration, inte en skärmbild från en viss Unity-version.
Utan attribut
Med Header, Range och Tooltip
Ett användbart fältexempel
Section titled “Ett användbart fältexempel”using UnityEngine;using UnityEngine.Serialization;
public sealed class PlayerSettings : MonoBehaviour{ [Header("Movement")] [Tooltip("Units per second")] [FormerlySerializedAs("moveSpeed")] [SerializeField, Range(0f, 20f)] private float speed = 5f;
[SerializeField, Min(1)] private int lives = 3;
public float Speed => speed;
private void OnValidate() { // Inspector attributes alone do not validate every runtime assignment. speed = Mathf.Clamp(speed, 0f, 20f); lives = Mathf.Max(1, lives); }}Fältet är privat men kan redigeras i Inspector. Andra skript får läsåtkomst via propertyn. OnValidate körs i editorn. Om data också kommer från externa källor under körning bör du validera värdena där de tas emot.
