학습 개요

카드 재배치 vs 비활성화 타이밍 충돌

  • 문제점: 게임에서 카드 매칭에 성공한 뒤 SetActive(false)로 비활성화했는데, 곧바로 랜덤 재배치 루틴에서 해당 카드를 다시 SetActive(true) 해버리는 현상 발생.

  • 원인: 비활성화 호출보다 재배치 루틴의 SetActive(true) 가 먼저 실행됨.

해결 방법:

  • SetActive(true) 호출 전, 카드 상태나 매칭 여부를 별도로 체크하는 플래그 추가.

  • 혹은 Invoke("SetActiveTrue", delayTime)을 통해 일정 시간 후 재활성화 처리.

  • 게임 매니저 혹은 카드 매니저에서 비활성화된 카드 리스트를 관리하도록 설계 개선 고려.

유니티 UI 드래그 상호작용

  • 뒤집개 오브젝트를 드래그하여, 르탄이를 뒤집어서 히든 스테이지에 돌입하는 이스터에그를 추가하기로 했다.

  • UIDrag 스크립트를 작성해 UI 오브젝트가 드래그될 때 Tag = "Hidden"인 오브젝트와 충돌 체크.

  • RectTransformUtility.RectangleContainsScreenPoint 로 UI 간 충돌 감지.

  • 드래그 방향을 판단해 아래에서 위로 움직일 때만 이벤트 발생하도록 제한.

Vector2 direction = endPos - startPos;
if (direction.y > Mathf.Abs(direction.x) && direction.y > dragThreshold)
{
    // 이벤트 발생
}

오늘 배운 핵심 정리

  • UI와 상호작용할 때는 입력 방향과 타이밍을 잘 조절해야 예측 가능한 UX를 만들 수 있다는 걸 느꼈다.

  • UI 요소끼리의 충돌을 처리하는 것도 물리 오브젝트 못지않게 세심한 조작이 필요했다.

  • “간단한 코드”라 생각했던 배열 생성이나 드래그 처리도, 상황에 따라 다양한 방식과 고려사항이 있음을 깨달았다.

댓글남기기