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

 

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM