Hoppa till innehåll

Attribut för Inspector och serialisering

↑
Referens för Unity 6

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ä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

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

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

Detta är en förenklad illustration, inte en skärmbild från en viss Unity-version.

Utan attribut

Player Settings
Speed5
Lives3

Med Header, Range och Tooltip

Player Settings
Rörelse
Speed ⓘ
5
Lives3
Unity C# | PlayerSettings.cs
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.