Noticias

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

Hierarchy

Iniciado por lightbug, Diciembre 15, 2016, 01:12:20 AM

Tema anterior - Siguiente tema
Hola, no se si soy yo pero el hierarchy view me esta volviendo loco cada vez que tengo que enparentar desenparentar algun objeto, por ejemplo, si tengo el ultimo objeto padre con sus hijos y quiero sacar un hijo de este debo colocarlo por encima siempre y cuando si hay un padre encima de este no este "abierto" (mostrando a sus hijos), por ejemplo dejo esta imagen de internet:
 

 
Si quisiera sacar (desenparentar) el gameObject "Test1 - Sucess" (del padre "Passing test") tengo que moverlo hasta llegar por encima de "Failing test", ahora si tengo 10000 objetos padres abiertos esto se vuelve un lindo trabajito.
 
Existe la posibilidad de hacer esto si llevar el objeto hasta arriba del todo? o de mejorar el Hierarchy creando una Custom Tool?
 
Saludos

te refieres a arrastrar un hijo fuera del padre con el cursor? jajaj, sí te entiendo es lento dar en el sitio correcto
 
me encanta hacer EditorWindow's para esas pequeñas tareas, en este caso puedes hacer uno así:
 

using Unit***itor;
...
public class CajaHerramientas : EditorWindow
{
[MenuItem("Window/Caja de Herramientas")]
static void Inicia()
{
   EditorWindow.GetWindow<CajaHerramientas>().Show();
}
    void OnGUI()
{
   if (GUILayout.Button("Desemparenta"))
        {
           if (Selection.activeTransform != null && Selection.activeTransform.parent != null)
                Selection.activeTransform.SetParent(Selection.activeTransform.parent.parent);
        }
    }
}

 
no lo he probado xD

Ah no se me habia ocurrido hacer algo asi. Eso si el segundo condicional te puede dar un nullreference ya que podes no tener un activetransform.
 
Se podra hacer como en runtime que enparentas a null? algo asi
 

if (Selection.activeTransform != null )
if (Selection.activeTransform.parent != null)
                Selection.activeTransform.SetParent(null);

 
Lo de acertar con el cursor probe a ver si en un pequeño espacio entre padres se podia desenparentar (sin llevarlo hasta arriba) pero no pude.
 
Gracias por la idea mañana lo pruebo y te digo.
 
Saludos

creo q si lo emparentas a null queda lo mas arriba posible en la jerarquia, tienes q probar xD

Quedo perfecto! Gracias por la idea lo subo en recursos por si llega a ser util

algo mas sensillo seria:
 

#if UNITY_EDITOR
using System.Collections;
using System.Collections.Generic;
using Unit***itor;
using UnityEngine;
public class Tools : MonoBehaviour
{
[MenuItem("Tools/GameObject UnParent %#p", false, 100)]
static void GameObjectUnParent()
{
   foreach(Transform Temptransform in Selection.transforms)
   {
      Temptransform.parent = null;
   }
}
}
#endif

 
 
 
Seleccionas el objeto y luego oprimes "Ctrl+Shift+P" y se des aparenta.

Etiquetas: