인프런 커뮤니티 질문&답변

명민님의 프로필 이미지
명민

작성한 질문수

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

InGame 맵(스테이지) 로드 (InGameManager)

Fade 구현 파트에서 childcount 부분이 헷갈려서요

해결된 질문

작성

·

49

0

로비씬 마지막에 Fade 구현 파트에서 UIManager에 CloseUI 함수에서 lastchild 가져오는 부분을

var lastChild = UICanvasTrs.GetChild(UICanvasTrs.childCount - 3); 빼기 숫자를 FadeImg 추가했으니 3으로 수정하는 부분이요. 강의에서도 유니티 창에서 추가 설명해주시긴 했는데 약간 헷갈려서요

이 코드 이후에 설명해 주실때 lastChild가 true면 겟 컴포넌트로 BaseUI 컴포넌트 가져오는데 이게 위 코드에서 -3으로 하면 null이 되니까 ... 대략 이런 방식으로 설명 주셨는데 이 부분도 잘 이해가 안돼서요 추가로 더 설명해 주실 수 있을까요

답변 2

0

BurningCarrot님의 프로필 이미지
BurningCarrot
지식공유자

안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다.

 

아래 표에 SettingsUI와 ConfirmUI가 열려있는 상황에서 UI를 차례로 닫을 때 CloseUI 함수에서 일어나는 로직과 오브젝트들의 sibling index 변화에 대해 설명해 보았습니다. 확인해 보시고 이해가 되지 않는 부분이 있으시다면 추가로 질문 부탁 드립니다.

image.png

 

명민님의 프로필 이미지
명민
질문자

이해가 됐습니다 알기 쉽게 표로 정리까지 해주시고 감사드립니다

0

안녕하세요, 인프런 AI 인턴입니다. 명민님.

UIManager에서의 CloseUI 함수 구현과 관련된 부분에서 헷갈리시는 점을 풀어드리겠습니다. 질문 내용은 CloseUI 함수에서 UI를 닫을 때 어떤 UI를 마지막으로 가져올지 결정하는 코드 부분인 것 같습니다.

핵심 개념 정리:

  1. UI Canvas의 Child Count:

    • UICanvasTrs.childCount는 현재 UI 캔버스의 자식 개체 수를 나타냅니다. 이 개체들 중 맨 마지막 UI를 가져오려면 .GetChild(UICanvasTrs.childCount - 1)을 사용합니다.
  2. FadeImg 추가에 따른 인덱스 조정:

    • FadeImg가 추가되면서 맨 마지막 자식의 인덱스가 한 칸 밀렸습니다. FadeImg는 UI의 가장 마지막에 위치하기 때문에 실제로 UI를 구성하는 마지막 자식 요소를 가져오려면 두 번째에서 세 번째로 마지막에 있는 요소(childCount - 3)를 가져와야 합니다.
  3. lastChild의 역할:

    • lastChild가 true가 되면 GetComponent<BaseUI>를 사용하여 해당 UI의 BaseUI 컴포넌트를 가져옵니다. 여기서 만약 유효한(null이 아닌) 컴포넌트를 가져오지 못하면 잘못된 인덱스를 지정한 것이므로 코드를 검사할 필요가 있습니다.

참고 링크 및 추가 정보:

이해하시는데 도움이 되셨길 바라며, 추가적으로 궁금한 사항이 있으시면 언제든지 질문해 주세요. 명민님이 좋은 경험을 하실 수 있도록 최선을 다하겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

명민님의 프로필 이미지
명민

작성한 질문수

질문하기