Freigeben über


UnityUI-Tools – MRTK3

UnityUI ist möglicherweise nicht das erste Tool, an das Mixed Reality-Entwickler beim Erstellen von 3D-Benutzeroberflächen denken. Aber mit einigen Hilfskomponenten und Hilfsprogrammen ist es möglich, schöne und flexible 3D-Benutzeroberflächen in UnityUI zu erstellen.

Beispielschaltflächen und Schieberegler für die Unity-Benutzeroberfläche

Tipp

Beim Erstellen von UnityUI ist es einfach, Leistungsengpässe zu erstellen. Bevor Sie komplexe UnityUI-Layouts erstellen, sollten Sie dieses Tutorial lesen.

Beispiel

Im UnityUI-Beispiel finden Sie Demonstrationen verschiedener Komponenten, die für UnityUI erstellt wurden.

Komponenten des Benutzeroberflächenverhaltens

Die folgenden Komponenten helfen beim Rendern der Benutzeroberfläche, aber sie sind 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 Canvas-Elements. Für viele Shadereffekte in Grafiktools muss die Objektskalierung bekannt sein. Um dieses Problem zu beheben, speichert das ScaleMeshEffect.cs während der Erstellung von UI-Gittern Skalierungsinformationen in UV-Kanalattributen.

Tipp

Ein Canvas - oder CanvasRenderer in Grafiktools fordert zum Hinzufügen eines ScaleMeshEffect.cs auf, wenn ein solcher erforderlich ist.

RectMask2DFast

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

RectMask2DFast funktioniert auf die gleiche Weise wie RectMask2D und ist ein empfohlener Ersatz. Wenn ein Problem auftritt, bei dem die Maskierung nach dem Hinzufügen oder Entfernen von RectMask2DFast Objekten aus nicht aktualisiert wird, müssen Sie möglicherweise ein Update wie folgt manuell aufrufen:

myRectMask2DFast.ForceClip = true;

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

Hinweis

Die Grafiktools/Canvas/Shader und grafiktools/Standard Canvas-Shader unterstützen die Weichheitseigenschaft auf RectMask2D oder nicht.RectMask2DFast.

RoundedRectMask2D

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

RoundedRectMask2D-Beispiel mit zwei Bildern

Hinweis

Die materielle Instanziierung muss vom Benutzer gesteuert werden. d. h. gemeinsame Materialien können durch RoundedRectMask2Derfolgen.

Grafikkomponenten der Benutzeroberfläche

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

CanvasElementRoundedRect

Diese Komponente generiert prozedural ein gerundetes 3D-Rechteckgitter, das dann dem Vertexstream der Canvas zugewiesen wird. Normalerweise wird diese Komponente verwendet, um Backplate-Gitter mit dem Grafiktools/Canvas-/Backplate-Shader zu generieren.

CanvasElementRoundedRect-Beispiel-Backplate

CanvasElementBeveledRect

Genau wie CanvasElementRoundedRectgeneriert diese Komponente prozedural ein abgerundetes 3D-Rechteck, aber mit abgeschrägten Kanten. Normalerweise wird diese Komponente verwendet, um Rückplattengitter mit dem Grafiktools/Canvas/Abgeschrägten Shader zu generieren.

CanvasElementBeveledRect-Beispiel

CanvasElementMesh

Die MeshRenderer-Komponente von Unity kann zum Anzeigen von 3D-Gittern in UnityUI verwendet werden, berücksichtigt jedoch einige der Layoutfeatures von UnityUI nicht. Um diese Layoutprobleme zu beheben, gibt es die CanvasElementMesh -Komponente.

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

CanvasElementMesh-Beispiel mit Rakete

Wichtig

Für das Eingabegitter muss die Eigenschaft Lesen/Schreiben aktiviert sein, damit 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 Dokumentation zur Animation .

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

Anker an Ecken und Ecken zu Ankern

Fenster > Grafiktools > Canvas Anchors > Anchors to Corners and Window > Graphics Tools > Canvas Anchors Corners > to Anchors ermöglicht es Ihnen, zwischen dem Ausdrücken des Layouts im Anheftsystem und dem Ankersystem (Einschränkung) von RectTransform hin- und herzuwechseln. Dies kann nützlich sein, wenn Sie zwischen dynamischen und festen Skalierungslayouts wechseln.

Siehe auch