UnityUI-Tools — MRTK3

UnityUI ist vielleicht nicht das erste Tool, an das Mixed Reality-Entwickler denken, wenn sie 3D-Benutzeroberflächen erstellen. Aber mit ein paar Hilfskomponenten und Dienstprogrammen ist es möglich, schöne und flexible 3D-Benutzeroberflächen in UnityUI zu erstellen.

Unity UI example buttons and sliders

Tipp

Bei der Erstellung von UnityUI kann es leicht zu Leistungsengpässen kommen. Bevor Sie komplexe UnityUI-Layouts erstellen, empfiehlt es sich, dieses Tutorial zu lesen.

Beispiel

Sehen Sie sich das UnityUI-Beispiel für Demonstrationen verschiedener Komponenten an, die für UnityUI erstellt wurden.

UI-Verhaltenskomponenten

Die folgenden Komponenten helfen bei der Darstellung der Benutzeroberfläche, sind aber keine sichtbaren Grafikkomponenten.

ScaleMeshEffect

Bei UnityUI-Komponenten ist die unity_ObjectToWorld-Matrix (oder UNITY_MATRIX_M in URP) nicht die Transformationsmatrix der lokalen Transformation, auf der sich die Grafikkomponente befindet, sondern die des übergeordneten Zeichenbereichs. Viele Shader-Effekte in den Grafiktools erfordern den Objektmaßstab, um bekannt zu sein. Um dieses Problem zu beheben, speichert die ScaleMeshEffect.cs Skalierungsinformationen in UV-Kanalattribute während der UI-Gitterkonstruktion.

Tipp

Ein Canvas oder CanvasRenderer in den Grafiktools fordert bei Bedarf einen ScaleMeshEffect.cs als Ergänzung.

RectMask2DFast

UnityUI verfügt über eine integrierte Komponente namens RectMask2D. Normalerweise wird diese Komponente verwendet, um einen kleinen Teil eines größeren Bereichs zu maskieren. Beim Maskieren von vielen Objekten kann dieser Prozess sehr viel Zeit in Anspruch nehmen, um Objekte auf der CPU zu entfernen. Um diesen Engpass zu vermeiden, enthält Grafiktools eine RectMask2DFast Komponente.

RectMask2DFast funktioniert auf die gleiche Weise wie RectMask2D eine empfohlene Ersatzlösung. Wenn ein Problem auftritt, bei dem die Maskierung nach dem Hinzufügen oder Entfernen von Objekten aus RectMask2DFast nicht aktualisiert wird, müssen Sie möglicherweise manuell eine Aktualisierung wie unten beschrieben durchführen:

myRectMask2DFast.ForceClip = true;

Alle Grafiktools/Canvas/Shader und die Grafiktools/Standard Canvas-Shader unterstützen RectMask2D, RectMask2DFastund RoundedRectMask2D.

Hinweis

Die Grafiktools/Canvas/Shader und die Grafiktools/Standard Canvas-Shader unterstützen die Softness-Eigenschaftnicht auf RectMask2D oderRectMask2DFast.

RoundedRectMask2D

RoundedRectMask2D abgeleitet von RectMask2DFast und wirkt ähnlich. Der einzige Unterschied besteht darin, dass RoundedRectMask2D einen Eckradiuswert für abgerundete Ecken enthält. Dieser Radius kann für alle Ecken oder jede Ecke einzeln ausgewählt werden.

RoundedRectMask2D example with two images

Hinweis

Die Materialinstanziierung muss vom Benutzer gesteuert werden. D.h. freigegebene Materialien können erfolgen durch RoundedRectMask2D.

UI-Grafikkomponenten

Die folgenden Grafikkomponenten helfen beim Hinzufügen der 3D-Dimensionalität zu einem Canvas.

CanvasElementRoundedRect

Diese Komponente erzeugt auf prozedurale Weise ein abgerundetes 3D-Rechtecknetz, das dann dem Vertex-Stream des Canvas zugewiesen wird. Normalerweise wird diese Komponente verwendet, um Backplate-Gitter mithilfe des Grafiktools/Canvas/Backplate-Shaders zu generieren.

CanvasElementRoundedRect example backplate

CanvasElementBeveledRect

Genau wie CanvasElementRoundedRect, generiert diese Komponente prozedural ein gerundetes 3D-Rechteck, aber mit abgeschrägten Kanten. Normalerweise wird diese Komponente verwendet, um Backplate-Gitter mithilfe des Grafiktools/Canvas/Beveled Shaders zu generieren.

CanvasElementBeveledRect example

CanvasElementMesh

Die Unity-MeshRenderer-Komponente kann verwendet werden, um 3D-Gitter innerhalb von UnityUI anzuzeigen. Einige der Layoutfeatures von UnityUI werden jedoch nicht berücksichtigt. Um diese Layoutprobleme zu beheben, gibt es die CanvasElementMesh Komponente.

Die CanvasElementMesh Komponente verwendet ein Eingabegitter und übersetzt es in eine Graphic Komponente.

CanvasElementMesh example with rocket

Wichtig

Das Eingabegitter muss seine Lese-/Schreibeigenschaft aktiviert haben, sodass Scheitelpunkte innerhalb des Skripts gelesen werden können.

Animation

Zum Animieren von UnityUI-Materialeigenschaften können Sie die CanvasMaterialAnimator... -Klassen verwenden. Weitere Informationen finden Sie in der Animation-Dokumentation.

Zur Unterstützung des UI-Layouts gibt es eine Handvoll Menüpunkte in den Grafiktools.

Anker an Ecken und Ecken an Ankern

Mit Window > Graphics Tools > Canvas Anchors > Anchors to Corners und Window > Graphics Tools > Canvas Anchors > Corners to Anchors können Sie zwischen dem Ausdrücken des Layouts im Pinning-System und dem in RectTransform innewohnenden Anker-(Einschränkungs-)System hin und her wechseln. Dies kann nützlich sein, wenn Sie zwischen reaktionsfähigen Layouts und festen Skalierungen wechseln.

Weitere Informationen