[TIL] 카드 매칭 개발 중 발생 이슈 해결
학습 개요
카드 재배치 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 요소끼리의 충돌을 처리하는 것도 물리 오브젝트 못지않게 세심한 조작이 필요했다.
-
“간단한 코드”라 생각했던 배열 생성이나 드래그 처리도, 상황에 따라 다양한 방식과 고려사항이 있음을 깨달았다.
댓글남기기