activeSelf
unity 获得自己active属性得时候可以用gameObject.activeSelf来获得,注意这是获取自身得active属性。假如该物体得父对象在层级面板上是关闭得状态,获取到activeSelf属性仍然是true。那么如果想获得这个物体得父对象状态代表他自己的状态时候需要用以下方法。
activeInHierarchy
activeInHierarchy是获取到父对象得层级面板得状态,如果没有父对象则,activeSelf和activeInHierarchy是相等得。下面做一些测试。
- 测试1:层级关系为1,单1父对象。
public GameObject gameobj;
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
Debug.Log("activeInHierarchy属性为:"+gameobj.activeInHierarchy);
}
if (Input.GetKeyDown(KeyCode.S))
{
Debug.Log("activeSelf属性为:" + gameobj.activeSelf);
}
}
如下图,我们将cube得父对象关闭,
按下A,S键所得:
2. 测试2:层级关系大于1。我们把目标该更target,存在多层层级关系(cube4为true,cube为false)测试下
结果如下
我们把cube为true,cube4为false再次测试。
最后我们把target前所有父物体改成true。
结论
只要target层级关系父对象中存在false 则activeInHierarchy为false。只有所有父对象都为true得情况下activeInHierarchy才为true。
而 activeSelf 只与自身有关。