끝! 끝! 끝! 끝! 끝!
미니 팀 프로젝트 주차가 드디어 끝나는 날이다.
근데 근데 근데 다른 팀들의 발표를 들으며 몇 가지 버그들을 듣다보니
우리 팀 프로젝트에도 포함되어 있는 버그라 생각이 돼서 프로젝트 마무리와 발표까지 되었지만
그래도 급히 수정을 해보려 한다.
! BugFix
문제점 : 빠르게 같은 카드를 연속 클릭하면 해당 카드를 매칭 성공한 것으로 인식이 된다.
해결방법 : Card 클래스에서 자신이 선택 됐는지 체크를 해주고 선택 됐으면 선택함수를 무시한다.
사진과 같은 어이없는 버그가 있었다......
그런데 해결방법도 어이없을 정도로 간단하다.
Card 스크립트에 코드 몇 줄만 추가 해주면 된다.
public class card : MonoBehaviour
{
bool isSelected = false;
public void openCard()
{
if (isSelected)
return;
isSelected = true;
}
void closeCardInvoke()
{
isSelected = false;
}
}
Card 클래스와 기존에 있던 함수 openCard 와 closeCardInvoke 에 추가된 코드들이다.
전역변수로 bool isSelected를 선언해
카드가 열릴 때 true를, 카드가 닫힐 때 false를 할당해준다.
만약 카드가 열려서 isSelected 가 true 라면 openCard함수 첫 줄에서 return 시켜
카드가 중복으로 선택되지 않도록 하면 된다!
해결!
하는김에 닫히기도전에 연속으로 선택되는 부분도 좀 수정해야겠다.
이 부분도 마찬가지로 코드 몇줄이면 해결된다.
GameManager 클래스를 수정하자
public bool IsMatching { get; private set; } = false;
public void isMatched()
{
StartCoroutine(MatchingRoutine());
}
private IEnumerator MatchingRoutine()
{
IsMatching = true;
yield return new WaitForSeconds(0.5f);
IsMatching = false;
}
bool IsMatching 를 프로퍼티로 선언 후 기존에 카드 2개가 선택되면 실행되는 isMatched 함수의 첫줄에
MatchingRoutine() 코루틴을 실행 해주자.
MatchingRoutine() 코루틴은 IsMatching을 true로 만든 뒤 0.5초 뒤 false로 바꿔준다.
이렇게 한 이유는 Card 가 선택될 때 2개의 카드가 모두 선택됐을 때 0.5초동안은 선택을 못하게끔 해주기 위함이다.
다시 Card 클래스 openCard 함수의 첫 줄 조건을 추가해주면
if (isSelected || GameManager.Instance.IsMatching)
return;
정상적으로 카드가 매칭 확인 중인 0.5초 동안은 다음 카드를 선택하지 못한다.
'스파르타 내배캠' 카테고리의 다른 글
스파르타 내배캠 Unity 3기 7일차 (1) | 2024.01.02 |
---|---|
스파르타 내배캠 Unity 3기 6일차 (1) | 2023.12.29 |
스파르타 내배캠 Unity 3기 4일차 (1) | 2023.12.27 |
스파르타 내배캠 Unity 3기 3일차 (2) | 2023.12.26 |
스파르타 내배캠 Unity 3기 2일차 (2) | 2023.12.22 |