Coloque una imagen de IU entre dos sprites 2D en Unity

8

Estoy desarrollando un juego 2D con Unity.

Tengo dos objetos sprite renderizados usando SpriteRenderer.

Con el nuevo sistema de interfaz de usuario, quiero usarlo para mostrar una imagen entre mis dos sprites. Es decir, mi primer sprite tiene un orden de clasificación de 100, luego mi UI Image tiene un orden de clasificación de 200 y luego mi segundo sprite tiene un orden de clasificación de 300.

¿Es eso posible?

Intenté usar capas de clasificación, pero pase lo que pase, la imagen de la IU parece superponerse siempre a mis dos sprites.

Óxido
fuente

Respuestas:

2

Esto es bastante simple de hacer, Weexe en realidad estaba en la ruta correcta, simplemente no proporcionó toda la información que parece necesitar.

Primero crea tus 2 sprites y un Canvas que contenga la imagen que deseas en el medio. Establezca "Orden en capa" en 2 y 0 para los 2 Sprites que desee en segundo plano o en primer plano. Un número más alto significa que está en el frente. Todos los elementos, incluida la interfaz de usuario, deberán estar en la misma capa de clasificación.

Ahora, haga clic en su lienzo y configure el Modo de renderizado en World Space , esto es necesario para que realmente tenga la opción de ir entre sprites en el mundo. Porque ahora también tienes la opción de ordenar y ordenar en capa en tu lienzo. ¡Establezca el Orden en Capa en 1 y la Capa de Clasificación en lo mismo que los 2 Sprites !

Nota: Si no puede encontrar su imagen de la interfaz de usuario, tenga en cuenta que en realidad es muy grande en la escena, tendrá que reducirla mucho en tamaño y colocarla en la imagen (no en el lienzo). Si desea encontrarlo, simplemente aleje mucho y comenzará a verlo ( Consejo: si en realidad es una imagen pequeña, debe activar la herramienta de transformación para que sepa dónde se encuentra actualmente).

Acabo de recrear esto en un minuto con imágenes de ejemplo, definitivamente funciona. Si tienes más preguntas solo comenta. Con mucho gusto te ayudaré.

CrystaX
fuente
1

Debe utilizar la referencia de "Espacio mundial" del modo Render: http://docs.unity3d.com/Manual/UICanvas.html

Weexe
fuente
Con el modo de renderizado "World Space", la imagen simplemente desaparece. No puedo verlo en la vista del juego.
Oxide
Su explicación fue bastante incompleta. Una vez que el modo de renderizado está configurado en "World Space", debe colocar la imagen en su escena. ¿Hiciste eso?
jhocking
1
Esta respuesta debería mejorarse con información adicional. ¿Por qué debería usarse ese modo de renderizado? ¿Qué problema está resolviendo eso? ¿Hay otros pasos?
MichaelHouse
1

He estado luchando con esto durante una hora y finalmente se me ocurrió una solución.

Estaba trabajando con una interfaz de usuario de World Canvas y no pude hacer que funcionara correctamente con sprites: primero, los sprites siempre estaban en la parte superior, luego los sprites desaparecían por completo, incluso si la imagen de la interfaz de usuario sobre ellos no era completamente opaca.

Entonces basado en: http://answers.unity3d.com/questions/832834/unity-2d-46b-ui-why-are-instantiated-prefab-sprite.html

Debe establecer el "Orden en capa" del "Sprite Renderer" de su sprite de fondo en 0.
Luego, establezca el "Orden en capa" de su componente de lienzo de la interfaz de usuario en 1.
El sprite de primer plano "Orden en capa" debe establecerse en 2 .
La capa de clasificación fue predeterminado para los 3 elementos.

Básicamente, podría trabajar con más de un lienzo espacial mundial y más de un sprite (en caso de que desee muchas capas de material 2d) y establecer la clasificación de las capas de forma correcta (recuerde que no puede configurar el Orden en la capa del elemento de la interfaz de usuario individualmente). se establece por el orden del GameObject en la jerarquía. En su lugar, debe establecer el orden en la capa para la interfaz de usuario en el lienzo)

El pequeño ayudante de santa
fuente