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.
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
, RectMask2DFast
und 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.
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.
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.
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.
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.
Menüelemente
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.