• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Sorting Layer, Mask, Canvas

21.08.11 01:37 작성 조회수 234

0

안녕하세요 강사님 정말 오랜만에 질문 글을 올립니다

파트 3까지 진행하고 저 혼자서 2D 슈팅 게임을 하나 만들고 있는데, 여기서 배운 몇가지를 활용하고 있습니다

캐릭터 선택창을 강사님이 보여주신 Scrollview를 활용해서 만들고 있어요 그런데 중간에 문제가 있었고, 해결은 한 상태인데 한가지 이해가 안가서요

글로 표현이 다 될 수 있을지는 모르겠으나 일단 한번 적어 보겠습니다

기본적인 골자는 수평 방향으로 스크롤뷰를 만들어서, 캐릭터 선택창을 만드는 것 입니다

강의에서 보여주신 것과는 달리 한번에 하나의 오브젝트만 보여지게 만들었습니다 

해당 오브젝트 안에서는 캐릭터의 이미지, 이름, 데미지 등이 보여지는 UI가 있습니다

처음에는 Mask 컴포넌트가 Image 컴포넌트만 마스킹 한다는 걸 모르고, 해당 UI들을 Sprite Renderer로 만들었습니다

나중에 다시 이 UI들은 Image 컴포넌트를 사용해서 다시 만들었습니다

위의 image UI들 위로, 텍스트 UI를 집어 넣었습니다, 차일드 오브젝트로서요

그런데 Sorting Layer 때문인지, 이 텍스트들이 이미지에 가려서 안보이더라고요

찾아보니까 Canvas 컴포넌트로 sorting layer를 오버라이딩 할 수 있다고 해서 그렇게 했습니다

가장 마지막 Sorting Layer는 UI 이고, 이미지 UI들에는  order 1번, 텍스트 UI에는 2번을 부여했습니다

이제 문제는 없을거라 생각을 했는데 한가지 문제가 생겼습니다
저기 위에 말씀드린 이미지 UI - 텍스트UI 들을 덮는 버튼 오브젝트가 있습니다(캐릭터 언락용 입니다)
이 버튼에는 Button, 및 Image 컴포넌트 외에
Layout Element 컴포넌트(Ignore Layer - true, Layout priority - 0)과 Canvas 컴포넌트(Pixel Perfect - inherit, Override Sorting - false)이렇게 추가를 했습니다

여기서 이상한게, 만약에 이 Canvas 컴포넌트에서 Override Sorting을 활성화시키면

Scrollview의 Viewport에 있는 Mask 컴포넌트의 영역 밖에다가 지금 이 메뉴 아이템 오브젝트를 생성했을 때, 이 버튼이 보입니다

 이걸 활성화 시키지 않으면 안보이고요 (이게 제가 원하는 결과물이죠)

그런데 또 이 Canavs 컴포넌트를 아예 꺼버리거나 제거하면, Sorting Layer 문제인건지, Mask 영역 내부에서도 안보입니다

혹시 설명을 해주실 수 있을까요?

답변 1

답변을 작성해보세요.

0

위 글로만 봐서는 어떤 상황인지 이해하기가 어렵습니다.
그리고 심지어 유니티 버전마다 조금씩 다르게 동작할 수도 있습니다.
만약 오래 고민해도 해결이 힘든 문제라면 해당 케이스가 발생하는
프로젝트 압축해서 rookiss@naver.com로 보내주시면 살펴보겠습니다.