UnityUI-verktyg – MRTK3
UnityUI kanske inte är det första verktyget som utvecklare av mixad verklighet tänker på när de skapar 3D-användargränssnitt. Men med några hjälpkomponenter och verktyg är det möjligt att skapa snygga och flexibla 3D-användargränssnitt i UnityUI.
Tips
Det är enkelt att skapa flaskhalsar för prestanda vid redigering av UnityUI. Innan du skapar komplexa UnityUI-layouter rekommenderar vi att du läser den här självstudien.
Exempel
Se UnityUI-exemplet för demonstrationer av olika komponenter som skapats för UnityUI.
Komponenter för användargränssnittsbeteende
Komponenterna nedan hjälper till med renderingsgränssnittet, men de är inte synliga grafiska komponenter.
ScaleMeshEffect
På UnityUI-komponenter är matrisen unity_ObjectToWorld
(eller UNITY_MATRIX_M
i URP) inte transformeringsmatrisen för den lokala transformeringen som den grafiska komponenten lever på utan den överordnade arbetsytans. Många skuggningseffekter i grafikverktyg kräver att objektskalning är känt. För att lösa det här problemet lagrar ScaleMeshEffect.cs skalningsinformation i UV-kanalattribut under konstruktionen av användargränssnittsnätet.
Tips
En Canvas eller CanvasRenderer i Grafikverktyg uppmanar till att lägga till en ScaleMeshEffect.cs när en krävs.
RectMask2DFast
UnityUI har en inbyggd komponent som heter RectMask2D. Normalt används den här komponenten för att maskera en liten del av ett större område. När du maskerar många objekt kan den här processen ta lång tid att ta bort objekt på processorn. För att undvika den här flaskhalsen innehåller Grafikverktyg en RectMask2DFast
komponent.
RectMask2DFast
fungerar på samma sätt som RectMask2D
och är en rekommenderad ersättning. Om du stöter på ett problem där maskeringen inte uppdateras när du har lagt till eller tagit bort objekt från RectMask2DFast
kan du behöva anropa en uppdatering manuellt som nedan:
myRectMask2DFast.ForceClip = true;
Alla grafikverktyg/arbetsyte-/ skuggningsverktyg och grafikverktyg/Standard-skuggning för arbetsytor stöder RectMask2D
, RectMask2DFast
och RoundedRectMask2D
.
Anteckning
Grafikverktyg/arbetsyte-/skuggningsverktyg och grafikverktyg/Standard-skuggning för arbetsytor stöder inte egenskapen Mjukhet på RectMask2D
ellerRectMask2DFast.
RoundedRectMask2D
RoundedRectMask2D
härledas från RectMask2DFast
och fungerar på liknande sätt. Den enda skillnaden är att RoundedRectMask2D
innehåller ett hörnradievärde för rundade hörn. Den här radien kan väljas för alla hörn eller varje hörn individuellt.
Anteckning
Materialets instancing måste styras av användaren. Dvs. delat material kan påverkas av RoundedRectMask2D
.
UI-grafikkomponenter
De nedanstående grafiska komponenterna bidrar till att lägga till 3D-dimensionalitet i en arbetsyta.
CanvasElementRoundedRect
Den här komponenten genererar procedurmässigt ett 3D-avrundat rektnät som sedan tilldelas arbetsytans hörnström. Normalt används den här komponenten för att generera backplate-nät med hjälp av grafikverktygen/arbetsytan/bakplåtsskuggan .
CanvasElementBeveledRect
Precis som CanvasElementRoundedRect
genererar den här komponenten procedurmässigt en 3D-avrundad rect men med fasade kanter. Normalt används den här komponenten för att generera bakplåtsnät med hjälp av grafikverktygen/arbetsytan/den fasade skuggningen.
CanvasElementMesh
Unitys MeshRenderer-komponent kan användas för att visa 3D-nät i UnityUI, men den respekterar inte vissa av de layoutfunktioner som UnityUI tillhandahåller. Komponenten finns för att lösa de här layoutproblemen CanvasElementMesh
.
Komponenten CanvasElementMesh
tar ett indatanät och översätter det till en Graphic
komponent.
Viktigt
Indatanätet måste ha dess läs-/skrivegenskap aktiverad så att hörn kan läsas i skriptet.
Animering
Om du vill animera UnityUI-materialegenskaper kan du använda klasserna CanvasMaterialAnimator... . Mer information finns i animeringsdokumentationen.
Menyalternativ
För att hjälpa till med gränssnittslayouten finns det några menyalternativ i Grafikverktyg.
Fästpunkter i hörn och hörn till fästpunkter
Fönstret > Med grafiska verktyg > för arbetsytor fäster > fästpunkter i hörn och fönstergrafikverktyg >> kan > du flytta fram och tillbaka mellan uttryckslayouten i fästsystemet och det fästpunktssystem (begränsning) som är inbyggt i RectTransform. Detta kan vara användbart när du flyttar mellan dynamiska layouter och layouter med fast skalning.