Posiziona un'immagine dell'interfaccia utente tra due sprite 2D in Unity


8

Sto sviluppando un gioco 2D con Unity.

Ho due oggetti sprite resi usando SpriteRenderer.

Con il nuovo sistema di interfaccia utente, voglio usarlo per visualizzare un'immagine tra i miei due sprite. Cioè, il mio primo sprite ha un ordinamento di 100, quindi la mia immagine dell'interfaccia utente ha un ordinamento di 200 e quindi il mio secondo sprite ha un ordinamento di 300.

È possibile?

Ho provato a utilizzare i livelli di ordinamento, ma a prescindere, l'immagine dell'interfaccia utente sembra sovrapporre sempre i miei due sprite.

Risposte:


2

Questo è abbastanza semplice da fare, Weexe in realtà era sulla strada giusta, ma non ha fornito tutte le informazioni di cui sembra aver bisogno.

Per prima cosa crea i tuoi 2 sprite e una tela che contiene l'immagine che vuoi tra di loro. Impostare "Ordina in livello" su 2 e 0 per i 2 Sprite desiderati in background o in primo piano. Un numero più alto significa che è in primo piano. Tutti gli elementi, inclusa l'interfaccia utente, dovranno trovarsi sullo stesso livello di ordinamento.

Ora, fai clic sulla tua tela e imposta la modalità di rendering su World Space , questo è necessario in modo da avere effettivamente la possibilità di andare tra gli sprite nel mondo. Perché ora hai anche il livello di ordinamento e l'ordine nell'opzione di livello sulla tua tela. Imposta l'ordine in Livello su 1 e il Livello di ordinamento sullo stesso dei 2 Sprite !

Nota: se non riesci a trovare l'immagine dell'interfaccia utente, tieni presente che in realtà è molto grande nella scena, dovrai ridurla pesantemente e posizionarla sull'immagine (non sulla tela). Se vuoi trovarlo, rimpicciolisci molto e inizierai a vederlo ( Suggerimento: se in realtà è una piccola immagine, dovresti attivare lo strumento di trasformazione in modo da sapere dove si trova attualmente).

L'ho ricreato in un minuto con immagini di esempio, funziona sicuramente. Se hai ulteriori domande, commenta. Sarò felice di aiutarti.


1

Devi utilizzare la modalità di rendering "World Space" di riferimento: http://docs.unity3d.com/Manual/UICanvas.html


Con la modalità di rendering "World Space", l'immagine scompare semplicemente. Non riesco a vederlo nella vista di gioco.
Ossido

La sua spiegazione era piuttosto incompleta. Una volta che la modalità di rendering è impostata su "World Space", devi posizionare l'immagine nella tua scena. Sei stato tu?
jhocking

1
Questa risposta dovrebbe essere migliorata con ulteriori informazioni. Perché dovrebbe essere usata quella modalità di rendering? Che problema sta risolvendo? Ci sono altri passaggi?
MichaelHouse

1

Ho combattuto con questo per un'ora e finalmente ho trovato una soluzione.

Stavo lavorando con un'interfaccia utente di World Canvas e non riuscivo a farlo funzionare correttamente con gli sprite: in primo luogo, gli sprite erano sempre in primo piano, quindi gli sprite scomparivano completamente anche se l'immagine dell'interfaccia utente sopra di loro non era completamente opaca.

Quindi basato su: http://answers.unity3d.com/questions/832834/unity-2d-46b-ui-why-are-instantiated-prefab-sprite.html

Dovresti impostare "Ordine nel livello" del "Sprite Renderer" dello sprite di sfondo su 0.
Quindi, imposta "Ordine nel livello" del componente Canvas dell'interfaccia utente su 1.
Lo sprite di primo piano "Ordine nel livello" dovrebbe essere impostato su 2 .
Lo strato di smistamento è predefinita per i 3 elementi.

Fondamentalmente, potresti lavorare con più di una tela spaziale mondiale e più di uno sprite (nel caso in cui desideri molti strati di materiale 2D) e impostare i livelli di ordinamento in modo corretto (ricorda che non puoi impostare l'ordine in Livello dell'elemento dell'interfaccia utente singolarmente. è impostato dall'ordine di GameObject nella gerarchia. Invece, devi impostare Order in Layer per l'interfaccia utente nell'area di disegno)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.