Version: 2017.3
Creando componentes desde scripting
Tags (Etiquetas)

Desactivando GameObjects

Un GameObject puede ser temporalmente eliminado de una escena marcándolo como inactivo. Esto puede ser hecho usando la propiedad activeSelf del script o con la casilla de activación en el Inspector

La casilla de activación de un GameObject

Efectos de desactivar un parent GameObject

Cuando un objeto parent es desactivado, la desactivación también anula el ajuste activeSelf en todos sus objetos hijo, entonces toda la jerarquía del parent para abajo es desactivada. Tenga en cuenta que esto no cambia el valor de la propiedad activeSelf de los objetos hijo, por lo que volverán a su estado original una vez se reactive el parent. Esto significa que no puede determina si un objeto hijo es actualmente activo o no en la escena leyendo su propiedad activeSelf . En vez, se debe usar la propiedad activeInHierarchy, que tiene en cuenta los efectos de anulación del parent.

Este comportamiento de anulación fue introducido en Unity 4.0. En versiones anteriores, había una función llamada SetActiveRecursively que podía ser utilizada para activar o desactivar los hijos de cualquier objeto parent dado. No obstante, esta función funcionaba diferentemente el ajuste de activación de cada objeto hijo fuera cambiado - la jerarquía completa podía ser encendida y apagada pero el objeto hijo no tenía manera de “recordar” el estado en el que originalmente estaba. Para evitar romper código heredado, SetActiveRecursively se ha mantenido en el API para 4.0, pero, su uso no es recomendado y puede ser eliminado en el futuro. En el caso extraño en donde quiera que el ajuste activeSelf del hijo sea cambiado, puede usar el código como el siguiente:-

// JavaScript
function DeactivateChildren(g: GameObject, a: boolean) {
    g.activeSelf = a;
    
    for (var child: Transform in g.transform) {
        DeactivateChildren(child.gameObject, a);
    }
}


// C#
void DeactivateChildren(GameObject g, bool a) {
    g.activeSelf = a;
    
    foreach (Transform child in g.transform) {
        DeactivateChildren(child.gameObject, a);
    }
}
Creando componentes desde scripting
Tags (Etiquetas)