유니티 마스킹 오류

김효중·2025년 5월 1일

개요

UI 이미지를 Mask를 통해 마스킹을 하려할 때 위와 같이 영역밖으로 이미지가 나오는 문제가 발생하였다.

두 이미지는 같은 캔버스에 존재하며 상위 오브젝트에 Image에는 스파라이트가 설정되고 Mask 컴포넌트가 존재하였다.

이를 해결 하기 위해 다음과 같은 시도를 하였다.

해결 시도

  • 하위 오브젝트 Maskable 옵션 확인
    옵션은 정상적으로 켜져 있었다.
  • 상위 마스크 이미지 확인
    같은 형태의 다른 이미지를 사용해도 영역 외에 이미지가 표기 되었고 원본 이미지도 투명도에 문제는 없었다.

즉 하위 이미지도 상위 마스크 이미지도 컴포넌트 설정이 문제가 없었고 이미지 파일도 문제 없었다.

해결 방법

마스킹하는 상위 오브젝트의 이미지 포멧을 RGBA 32 Bit로 변경한다.

문제 원인

이는 이미지 포멧별로 알파 채널(투명도)의 지원 여부에 다른 차이였다.
기본 세팅인 Automatic의 경우 플랫폼 및 이미지 특성에 따라 자동적으로 포멧이 선택 된다.
이때 투명도를 지원하지 않는 경우 Mask가 알파를 잘못 읽어 문제가 발생한다.

그렇기에 투명도를 정확히 지원하는 RBGA32, ETC2 RGBA8, ASTC RGBA등으로 바꾸면 해결된다.

결론

마스크 이미지와 같이 확실한 알파값이 필요한 이미지는 포멧을 RBGA32로 설정한다.
하지만 RGBA32는 압축하지 않는 방식이므로 남용해서 쓰지 않고 정확한 알파값이 필요한 경우에만 사용한다.

profile
도전하는 개발자

0개의 댓글