뒷 배경의 오브젝트 터치가 유니티에서 자꾸 감지가 될 때가 있습니다.
뒤의 오브젝트가 터치되어 버리면 안되는 경우가 있는데도 말입니다 ㅠㅠ
어떨 때일까요?
예를들어, 어떤 드래그 처리를 잘못했을 때 잘못했다는 UI를 뜨게 하고 싶은데 그 작은 대화창을 터치했더니 그 뒤의 게임 오브젝트 터치로 다시 감지되어 무한 작은 대화창 UI가 열리는 경우입니다. 물론 그 뒤의 오브젝트가 작으면 그럴 가능성이 줄어들겠지만 그래도 최대한 게임에서 버그가 없는 게 좋잖아요?
저는 이상하게.. 그 작은 대화창 UI에 panel을 깔고, block raycast를 true로 하고, ignore parents 까지 해도 감지가 되더라구요. 그래서 그냥 코드로 처리했습니다.
// 드래그 시작 포인트 얻기
Vector2 touchPos = isTouching ? Input.GetTouch(0).position : (Vector2)Input.mousePosition;
PointerEventData eventData = new PointerEventData(EventSystem.current);
eventData.position = touchPos;
List<RaycastResult> results = new List<RaycastResult>();
EventSystem.current.RaycastAll(eventData, results);
// UI 레이어인 오브젝트가 있으면 드래그 처리 안 함
foreach (RaycastResult result in results)
{
Debug.Log($"[SingleDrag] 레이캐스트 결과: {result.gameObject.name}, 레이어: {LayerMask.LayerToName(result.gameObject.layer)}");
if (result.gameObject.layer == LayerMask.NameToLayer("UI"))
{
return;
}
}
이런 식으로 코드를 '터치가 감지되는 아이의 스크립트' 터치판정 내부에 적어주면 됩니다!
그다음에 감지되지 않게 하고 싶은 것 (대부분 ui)의 레이어 설정을 ui로 바꿔주세요.
이상 간단하게 ui 뒤가 터치안되게 하는 방법이었습니다. 안녕~
'1인 개발 게임 (Unity) > UNITY' 카테고리의 다른 글
| [UNITY 6] firebase로 android환경 google 로그인 구현하기 (Mac) (0) | 2025.11.04 |
|---|---|
| [UNITY] 한글 폰트 안 깨지게 하는 법 / 한글 폰트 설정법 / 한글폰트가 깨져요/ 유니티 한글 폰트 추천 (0) | 2025.10.29 |
| [Unity] 비활성화된 프리팹 스크립트로 활성화 시키기 (0) | 2025.05.23 |
| [UNITY] button 에서 image 투명한 부분은 선택안되게 하기 (2) | 2024.08.25 |
| [UNITY] 버튼 BUTTON 기능 (0) | 2024.08.09 |