ActiveSelf
Unity 獲得自身 Active 屬性的時候可以用 gameObject.activeSelf 來獲得,注意這是獲取自身的 Active 屬性
假如該物體的父對象在層級面板上是關閉的狀態,獲取到的 ActiveSelf 屬性仍然是 True
那么如果想獲得這個物體的父對象狀態來表示他自己的狀態時就需要用到 ActiveInHierarchy
ActiveInHierarchy
ActiveInHierarchy 是獲取到父對象層級面板的狀態
如果沒有父對象的話,則 ActiveSelf 和 ActiveInHierarchy 的值是相等的
Test
測試1:層級關系為1,單一父對象
1 public GameObject Obj; 2 3 void Update() 4 { 5 if (Input.GetKeyDown(KeyCode.Q)) 6 { 7 Debug.Log("activeInHierarchy的屬性為:" + Obj.activeInHierarchy); 8 } 9 if (Input.GetKeyDown(KeyCode.E)) 10 { 11 Debug.Log("activeSelf的屬性為:" + Obj.activeSelf); 12 } 13 }
如圖,將作為父對象的 Cube 對象關閉
測試結果:
測試2:層級關系大於1,多個父對象
將 Cube1 設為 False,Cube4 設為 True
測試結果:
接着將 Cube1 設為 True,Cube4 設為False 進行測試:
最后將所有父對象的 Cube 都設為 True 進行測試:
結論
只要目標對象的層級關系父對象中存在 False,則 ActiveInHierarchy 只能為 False
只有目標對象的所有父對象都為 True 的情況下 ActiveInHierarchy 才會為 True
而 ActiveSelf 的結果只與自身有關,與父對象無關
*** | 以上內容僅為學習參考、學習筆記使用 | ***