가장 중요한 조건이 하나 있습니다.
해당 비활성화 오브젝트의 부모 오브젝트가 활성화 상태여야 합니다.
부모 오브젝트로 따로 넣을 오브젝트가 없다면 빈 오브젝트를 생성하여
자식 오브젝트로 접근하려는 비활성화된 오브젝트를 넣어주면 됩니다.
간단히 하이어라키 창에 예시로 이런 구조를 만들고
활성화된 부모 오브젝트(ItemCanvas)에 스크립트를 추가하여 아래와 같은 방법을 사용하면 됩니다.
방법 1~4 중 하나만 쓰면 됩니다.
방법 1. transform.Find(string n);
문자열 n과 일치하는 이름의 자식 트랜스폼을 찾습니다.
방법 2. transform.GetChild(int index);
하이어라키 창에서 index에 맞는 자식 오브젝트의 트랜스폼을 찾습니다.
방법 3. GetComponentInChildren<Type>(bool includeinactive)
하이어라키 창 위에서 아래로 탐색을 진행하며 처음으로 나온
자식 오브젝트가 포함한 Type에 해당하는 컴포넌트를
includeinactive : 비활성화 포함 여부를 따져 가져옵니다.
괄호 안에 true를 기입하면 비활성화 오브젝트의 해당 타입 컴포넌트도 받아올 수 있습니다.
(괄호 안에 아무것도 기입하지 않은 기본값은 false)
하나만 찾는 것으로는 해결하기 어려운 구조일 때 파생형으로
방법 4. GetComponenstInChildren<Type>(bool includeinactive)
(여러개를 받아오기에 위와는 다르게 복수형인 s를 씁니다)
하이어라키 창 위에서 아래로 탐색을 진행하며 나온 순서대로
자식 오브젝트들이 포함한 Type에 해당하는 컴포넌트들을
includeinactive : 비활성화 포함 여부를 따져
Type형의 배열로 결과값을 반환합니다.
'기능 구현 방법 정리' 카테고리의 다른 글
유니티) 일시 정지 상태의 게임에서 무언가 진행되도록 하고 싶다면? (0) | 2024.04.12 |
---|---|
유니티) 불필요한 설명을 너무 줄인 직렬화 기본 (0) | 2023.09.03 |
인간 시대의 끝이 도래했다? 챗 GPT를 이용한 게임 프로그래밍 (0) | 2023.03.21 |
유니티) 화면 해상도 대응 (0) | 2023.03.15 |
FindObjectsOfType<T>() 사용에 대하여 주의할 점 (0) | 2023.03.13 |