Noticias

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

Ayuda con algo relacionado a la Jerarquía (Hiperiachy)

Iniciado por The_En&e1, Abril 25, 2017, 02:04:28 AM

Tema anterior - Siguiente tema
Abril 25, 2017, 02:04:28 AM Ultima modificación: Abril 25, 2017, 10:58:42 AM por pioj
Hola, muy buenas!
 
Por favor necesito saber si hay una API de Unity que me permita hacer mediante script a un objeto hijo de otro y moverlo en su posición en la jerarquía para ponerlo ya sea por encima o por debajo de otros en esta.
 
Gracias!  ;)

Abril 25, 2017, 02:50:06 AM #1 Ultima modificación: Abril 25, 2017, 02:52:32 AM por lightbug
Si claro, Unity puede hacer eso, supongo que esto lo queres hacer en el mismo Editor y no en Runtime, (corregime si me equivoco). Tenes que hacer lo que se llama un Editor script, es basicamente un script que vive en el editor, hereda de Editor o de EditorWindow (depende de donde queres hacer la herramienta).
 
Ahora, la pregunta del millon, por que no lo haces manualmente? tiene sentido si queres automatizar el proceso para muchos objetos, pero agarrar un objeto especifico y moverlo dentro de la jerarquia no me parece algo apropiado para un herramienta.(otra vez, si fuera en modo Editor y no en runtime)
 
 
 
 

Cita de: lightbug date=1493081406Si claro, Unity puede hacer eso, supongo que esto lo queres hacer en el mismo Editor y no en Runtime, (corregime si me equivoco). Tenes que hacer lo que se llama un Editor script, es basicamente un script que vive en el editor, hereda de Editor o de EditorWindow (depende de donde queres hacer la herramienta).
   
   
      Ahora, la pregunta del millon, por que no lo haces manualmente? tiene sentido si queres automatizar el proceso para muchos objetos, pero agarrar un objeto especifico y moverlo dentro de la jerarquia no me parece algo apropiado para un herramienta.(otra vez, si fuera en modo Editor y no en runtime)
   
   
       
   
   
       
   


Si, eso se me olvido especificar.
 
Es en runtime.

Cita de: The_En&e1 date=1493082539Si, eso se me olvido especificar.
   
   
      Es en runtime.
   


Hasta donde se, para mover de posición los hijos tienes cambiarlos de objeto y volverlos a reasignar al padre, los últimos objectos que pongas como hijos serán los últimos en la lista. Te pongo un ejemplo simple de una función para poner un objeto el último. Si quieres ordenarlos tendrás que hacer una lista con el orden que quieres, quitarlos todos del padre original y después reasignarlos con la lista ya ordenada.
 

   void PonerObjetoUltimo(Transform padre, GameObject objeto)
    {
        // Ponemos momentaneamente el hijo en el padre del padre(suponiendo que no está en la raíz)
        objeto.transform.SetParent(padre.parent);
        // Volvemos a hacerlo hijo del padre original. Ahora será el último de los hijos.
        objeto.transform.SetParent(padre);
    }

 
 


Cita de: lightbug date=1493100790Existe ya una funcion para eso jaja se usan los sibling:
   
   
      Poner en cualquier orden:
   
   
      https://docs.unity3d.com/ScriptReference/Transform.SetSiblingIndex.html
   
   
      primero:
   
   
      https://docs.unity3d.com/ScriptReference/Transform.SetAsFirstSibling.html
   
   
      ultimo:
   
   
      https://docs.unity3d.com/ScriptReference/Transform.SetAsLastSibling.html
   
   
       
   


Joder! Y todo este tiempo yo lo hacía manual! 

Etiquetas: