Tempatkan Gambar UI antara dua sprite 2D di Unity


8

Saya mengembangkan game 2D dengan Unity.

Saya memiliki dua objek sprite yang dibuat menggunakan SpriteRenderer.

Dengan sistem UI baru, saya ingin menggunakannya untuk menampilkan gambar antara dua sprite saya. Artinya, sprite pertama saya memiliki urutan pengurutan 100, kemudian Gambar UI saya memiliki urutan pengurutan 200 dan kemudian sprite kedua saya memiliki urutan pengurutan 300.

Apakah itu mungkin?

Saya mencoba menggunakan lapisan sortir, tetapi tidak peduli apa, gambar UI tampaknya selalu overlay dua sprite saya.

Jawaban:


2

Ini cukup sederhana untuk dilakukan, Weexe sebenarnya berada di jalur yang benar hanya tidak memberikan seluruh informasi yang Anda butuhkan.

Pertama buat 2 sprite Anda dan kanvas yang menahan gambar yang Anda inginkan. Set "Order in Layer" menjadi 2 dan 0 untuk 2 Sprite yang Anda inginkan di latar belakang atau latar depan. Angka yang lebih tinggi berarti ada di depan. Semua elemen, termasuk UI harus berada pada Layer Sorting yang sama.

Sekarang, klik Kanvas Anda dan atur Mode Render ke World Space , ini diperlukan agar Anda benar-benar mendapatkan opsi untuk berpindah antar sprite di dunia. Karena sekarang Anda memiliki Layer Sorting dan Order in Layer Option di Kanvas Anda juga. Atur Order in Layer menjadi 1 dan Sorting Layer menjadi sama dengan 2 Sprite !

Catatan: Jika Anda tidak dapat menemukan Gambar UI, perhatikan bahwa gambar itu sebenarnya super besar di layar, Anda harus mengurangi ukurannya dan menempatkannya di gambar (bukan kanvas). Jika Anda ingin menemukannya cukup perkecil dan Anda akan mulai melihatnya ( Kiat: jika itu sebenarnya adalah gambar kecil, Anda harus mengaktifkan alat transformasi agar Anda tahu di mana posisinya saat ini).

Saya baru saja menciptakan ini dalam satu menit dengan contoh gambar, pasti berfungsi. Jika Anda memiliki Pertanyaan lebih lanjut, beri komentar. Saya dengan senang hati akan membantu.


1

Anda harus menggunakan Referensi Mode Dunia "Render": http://docs.unity3d.com/Manual/UICanvas.html


Dengan mode render "World Space", gambar hilang begitu saja. Saya tidak bisa melihatnya di tampilan permainan.
Oksida

Penjelasannya agak tidak lengkap. Setelah mode render diatur ke "World Space", Anda harus memposisikan gambar dalam adegan Anda. Apakah kamu melakukan itu?
jhocking

1
Jawaban ini harus ditingkatkan dengan informasi tambahan. Mengapa mode render itu digunakan? Apa masalah pemecahan itu? Apakah ada langkah lain?
MichaelHouse

1

Saya telah berjuang dengan ini selama satu jam dan akhirnya saya menemukan solusi.

Saya bekerja dengan World Canvas UI dan tidak dapat membuatnya bekerja dengan benar dengan sprite: pertama, sprite selalu di atas, maka sprite menghilang sepenuhnya bahkan jika gambar UI di atas mereka tidak sepenuhnya buram.

Jadi berdasarkan pada: http://answers.unity3d.com/questions/832834/unity-2d-46b-ui-why-are-instantiated-prefab-sprite.html

Anda harus mengatur "Order in layer" dari sprite latar belakang Anda "Sprite Renderer" menjadi 0.
Kemudian, atur "Order in layer" dari komponen Canvas UI Anda ke 1.
Sprite foreground "Order in layer" harus diatur ke 2 .
lapisan menyortir adalah default untuk 3 elemen.

Pada dasarnya, Anda dapat bekerja dengan lebih dari satu kanvas ruang dunia dan lebih dari satu sprite (jika Anda menginginkan banyak lapisan barang 2d) dan mengatur koreksi layer penyortiran (ingat Anda tidak dapat mengatur Urutan di Lapisan elemen UI secara individual. diatur oleh urutan GameObject dalam hierarki. Sebaliknya, Anda harus mengatur Order in Layer untuk UI di Canvas)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.