activeSelf vs activeInHierarchy

Noke·2025년 5월 16일

Unity TIL

목록 보기
12/31

오늘은 강의를 들으면서, 3D 유니티 게임을 제작해 보았다.

그런데, 강의에서 activeInHierarchy를 사용해서 activeSelf와 차이점이 무엇인지 궁금해졌다.


activeSelf

  • 오브젝트 자신에게 설정된 활성화 여부를 반환한다.
  • gameObject.SetActive(true or false)로 직접 설정한 값이 그대로 나온다.
  • 부모의 상태는 고려하지 않는다.
gameObject.SetActive(false);
Debug.Log(gameObject.activeSelf); // false

activeInHierarchy

  • 이 오브젝트가 씬 내에서 실제로 활성화되어 있는지를 나타낸다.
  • 즉, 자신 + 모든 부모가 전부 활성화 상태일 때만 true를 반환한다.
  • 부모 중 하나라도 비활성화되면, 이 값은 false이다.
// 부모 오브젝트가 비활성화됨
parentObject.SetActive(false);
Debug.Log(childObject.activeSelf); // true
Debug.Log(childObject.activeInHierarchy); // false

🔍 요약 비교

속성의미예시 결과
activeSelf자신이 직접 설정한 활성 상태true/false
activeInHierarchy부모까지 포함해 씬에서 실제 활성 상태인지true/false

📌 결론

  • activeSelf: 내가 켜져 있는가?
  • activeInHierarchy: 내가 씬에서 진짜로 보이는 상태인가?

이처럼 둘은 비슷해 보이지만 확실한 차이가 존재했다.

따라서, 상황에 맞게 둘을 적절하게 사용하면 될 것 같다.

profile
유니티 개발자(진)

0개의 댓글