Platzieren Sie ein UI-Bild zwischen zwei 2D-Sprites in Unity

8

Ich entwickle ein 2D-Spiel mit Unity.

Ich habe zwei Sprite-Objekte mit gerendert SpriteRenderer.

Mit dem neuen UI-System möchte ich damit ein Bild zwischen meinen beiden Sprites anzeigen . Das heißt, mein erstes Sprite hat eine Sortierreihenfolge von 100, dann hat mein UI-Image eine Sortierreihenfolge von 200 und mein zweites Sprite hat eine Sortierreihenfolge von 300.

Ist das möglich?

Ich habe versucht, Sortierebenen zu verwenden, aber egal was passiert, das UI-Bild scheint immer meine beiden Sprites zu überlagern.

Oxid
quelle

Antworten:

2

Dies ist ziemlich einfach zu tun, Weexe war tatsächlich auf dem richtigen Weg und gab nicht alle Informationen an, die Sie anscheinend benötigen.

Erstellen Sie zuerst Ihre 2 Sprites und eine Leinwand mit Ihrem gewünschten Bild dazwischen. Setzen Sie "Reihenfolge in Ebene" für die 2 Sprites, die Sie im Hintergrund oder im Vordergrund haben möchten, auf 2 und 0 . Eine höhere Zahl bedeutet, dass es vorne ist. Alle Elemente, einschließlich der Benutzeroberfläche, müssen sich auf derselben Sortierebene befinden.

Klicken Sie nun auf Ihre Leinwand und stellen Sie den Rendermodus auf World Space ein . Dies ist erforderlich, damit Sie tatsächlich die Möglichkeit haben, zwischen Sprites in der Welt zu wechseln. Denn jetzt haben Sie auch die Option Ebene sortieren und in Ebene sortieren auf Ihrer Leinwand. Setzen Sie die Reihenfolge in Ebene auf 1 und die Sortierebene auf die gleichen wie bei den 2 Sprites !

Hinweis: Wenn Sie Ihr UI-Bild nicht finden können, beachten Sie, dass es in der Szene tatsächlich sehr groß ist, müssen Sie es stark verkleinern und das Bild (nicht die Leinwand) positionieren. Wenn Sie es finden möchten, verkleinern Sie es einfach und Sie werden es sehen ( Tipp: Wenn es sich tatsächlich um ein kleines Bild handelt, sollten Sie das Transformationswerkzeug aktivieren, damit Sie wissen, wo es sich gerade befindet).

Ich habe dies in einer Minute mit Beispielbildern neu erstellt, funktioniert definitiv. Wenn Sie weitere Fragen haben, kommentieren Sie einfach. Ich helfe gerne.

CrystaX
quelle
1

Sie müssen die Referenz für den Rendermodus "World Space" verwenden: http://docs.unity3d.com/Manual/UICanvas.html

Weexe
quelle
Im Rendermodus "World Space" verschwindet das Bild einfach. Ich kann es in der Spielansicht nicht sehen.
Oxid
Seine Erklärung war ziemlich unvollständig. Sobald der Rendermodus auf "World Space" eingestellt ist, müssen Sie das Bild in Ihrer Szene positionieren. Hast du das gemacht?
Jhocking
1
Diese Antwort sollte mit zusätzlichen Informationen verbessert werden. Warum sollte dieser Rendermodus verwendet werden? Welches Problem löst das? Gibt es noch andere Schritte?
MichaelHouse
1

Ich habe eine Stunde lang damit gekämpft und schließlich eine Lösung gefunden.

Ich habe mit einer World Canvas-Benutzeroberfläche gearbeitet und konnte sie mit Sprites nicht richtig ausführen: Zuerst waren Sprites immer oben, dann verschwanden die Sprites vollständig, auch wenn das UI-Bild über ihnen nicht vollständig undurchsichtig war.

Also basierend auf: http://answers.unity3d.com/questions/832834/unity-2d-46b-ui-why-are-instantiated-prefab-sprite.html

Sie sollten die "Reihenfolge in Ebene" des "Sprite-Renderers" Ihres Hintergrund-Sprites auf 0 setzen
. Setzen Sie dann die "Reihenfolge in Ebene" Ihrer UI-Canvas-Komponente auf 1.
Das Vordergrund-Sprite "Reihenfolge in Ebene" sollte auf 2 gesetzt sein .
Die Sortierschicht betrug Standardwert für die 3 Elemente.

Grundsätzlich können Sie mit mehr als einem Weltraumbereich und mehr als einem Sprite arbeiten (falls Sie viele Ebenen mit 2D-Material benötigen) und die Sortierungsebenen korrekt einstellen (denken Sie daran, dass Sie die Reihenfolge in der Ebene des UI-Elements nicht einzeln festlegen können wird durch die Reihenfolge des GameObject in der Hierarchie festgelegt. Stattdessen müssen Sie die Reihenfolge in der Ebene für die Benutzeroberfläche im Canvas festlegen.

Santa's kleiner Helfer
quelle