1. 程式人生 > 實用技巧 >Unity 自身與父物件的Active狀態

Unity 自身與父物件的Active狀態

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 的結果只與自身有關,與父物件無關

*** | 以上內容僅為學習參考、學習筆記使用 | ***