Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Problema con orden de renderizado del UI (Paneles en distinto orden)

Iniciado por biztor, Diciembre 05, 2015, 02:28:41 AM

Tema anterior - Siguiente tema
Buenas, estoy haciendo un sistema de inventario, tengo el canvas, panel para inventario, panel para slots, y luego dentro imagen. La cosa es que al arrastrar un objeto de un slot a otro, los slots no estan renderizados en la misma capa u orden, con lo cual al pasar el objeto por otro slot, la imagen pasa por debajo. como puedo solucionar esto? He probado en vez de paneles, usar todo imágenes (UI) pero igual. La cosa es que a cada elemento UI en la jerarquía, parece ser que se crea en una capa distinta, entonces cada nuevo slot estará encima del anterior, no se como hacer para que todos los elementos de la UI se generen en el mismo orden de capa.Alguien sabe? gracias.

Se complica la cosa, resulta que si uso OnPointerEnter() no funciona bien por culpa del orden de las capas. hago click seleciono el Item, y al moverlo a un panel de UI que este por encima si detecta que entra en otro collider, pero si pasa al reves no. Es decir, si el item esta en un slot por encima de los demas, a la hora de clickarlo y pasar por encima de otros slots que esten por debajo, el OnPointerEnter() no va a detectar el collider del Slot. Me parece una chapuza vamos...Tampoco puedo usar OnMouseEnter y demas, porque crearia un collider que se superpone a la camara, y esta no la detecta. Nose como hacer funcionar esto del inventario.

Diciembre 06, 2015, 06:39:40 PM #2 Ultima modificación: Diciembre 06, 2015, 06:40:41 PM por kaito
[quote author=biztor" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34612" data-ipsquote-contentcommentid="124590">La cosa es que a cada elemento UI en la jerarquía, parece ser que se crea en una capa distinta, ...[/quote] http://docs.unity3d.com/es/current/Manual/class-Canvas.html">http://docs.unity3d.com/es/current/Manual/class-Canvas.html Las capas o 'layers' del UI se crean con el componente Canvas, con el nombre 'Sort Order': Y también 'Order in Layer', según el tipo de 'Render Mode' seleccionado. Dentro del Canvas, en la misma capa, se modifica el orden de dibujo o renderizado desde el componente RectTransform con el método SetSiblingIndex: http://docs.unity3d.com/ScriptReference/Transform.SetSiblingIndex.html date=1449278921]http://docs.unity3d.com/ScriptReference/Transform.SetSiblingIndex.html 

Si, al final la medio solución es cada vez que clicko en un item, poner el slot que lo contiene con el index mas bajo, para que estén los demas slots por encima, esto soluciona el error del OnPointerEnter(), que no funciona bien. (como si en un raycast en la capa X, detectase solo los colliders de los sprites en un solo index, cuando no es asi..). 

Etiquetas: