20231102_기록_카드 뒤집기 게임 버그 수정

2023. 11. 2. 21:22IT/TIL

오늘 한 것들

 

카드 뒤집기 게임 구현 및 버그 수정

게임 구현 시 했던 방식과 버그, 수정 방식 기록

 

이전에 준비했었던 카드 뒤집기 게임의 구현의 마무리 및 버그 수정을 하였다.

EndTxt 부분을 GameObject화 시켜서 내용을 수정할 수 있게 만들고

추가로 UI를 구현하여 사용자에게 게임을 좀 더 쉽게 이해할 수 있게 만들었다.

 

이후에 작업하면서 버그들이 생겼었는데 이를 해결하는 과정에서 버그가 발생했었는데

이를 해결하는 작업하면서 과정을 적어둔 후에 발표자료를 만들면서 기록했다.

 


1. 빠르게 카드를 없애면 게임이 종료되지 않는 현상
 (cardsLeft == 2를 만족하는 타이밍이 강제로 넘어가지는 것으로 판단 → cardsLeft <= 2 로 수정하여 해결)
→ 동일하게 게임이 종료되지 않는 현상이 발생하여 남은 카드를 확인하는 변수를 새롭게 지정
public Transform cards;로 cards를 지정해 주고 int remainingCards = cards.childCount; 로 지정해서 
남은 카드를 확인하는 방법으로 remainingCards == 2의 상태에서 클리어되게 해결
cardsLeft는 int cardsLeft = GameObject.Find("Cards").transform.childCount; 로 지정했었는데
gameObject를 Find하는 과정에서 문제가 있었던 것으로 추측된다.
        
2. 종료된 이후에도 시간이 변경되는 현상
GameOver() 함수가 실행되면 즉시 Time.timeScale = 0.0f;로 시간을 멈췄으나
화면에 표시되는 시간은 계속 흘러가는 현상을 발견
→ 시간을 표시하는 변수 쪽의 문제로 생각하고 변수 time을 조작했지만 해결되지 않음
→ Update 부분의 문제로 생각하여 해당 부분에서 시간을 표시하는 부분을 조작했지만 해결되지 않음
→ 찾아본 결과 게임 시작 시에 바로 시간이 흘러가는 것이 아니라 준비 시간을 도입하면서 
(카드가 날아와서 보여준 후에 뒤집어지고 시작되는 시간이 존재함)
그 딜레이를 위한 bool값인 isStart가 지정되어 있었음.
→ GameOver() 함수에서 true 상태인 isStart를 false로 변경하여 해결
        
3. 게임이 종료된 후에도 카드를 뒤집을 수 있는 현상
(게임이 종료되면 카드 오브젝트를 안보이게하거나(SetActive 사용)
오브젝트의 상호작용을 없애는 방식으로(버튼의 OnClick을 조절하는 방식) 해결할 예정)
실제로 해결한 방법
GameManager에서 isGameOver라는 bool 값을 지정한 후에 GameOver() 함수가 작동되면
isGameOver가 true가 되게 지정 → isGameOver가 true인 상태에서는 OpenCard() 함수가 작동되지 않게 조건을 추가
if (!GameManager.instance.twoselect && !GameManager.instance.isGameOver)


4. Best Score가 정상적으로 표시되지 않는 버그
결과 창에서 Best Score가 잘못 표시되는 버그가 있었다.
해당 버그는 Score를 설정하는 과정에서 생긴 버그로 초기에는 
Score를 처리하는 과정에서 초기에 ‘남은 시간’이 아니라 
‘지나간 시간’을 Score로 설정했었는데 이후에 ‘남은 시간’을 Score로 설정하는 과정에서
Best Score를 고르는 기준이 반대가 되었는데 부등호를 잘못 확인했었던 원인으로 버그로 이어졌었다.
이후에 부등호를 반대로 처리하여 Best Score가 정상적으로 저장되고 표시되는 것을 확인했다.

'IT > TIL' 카테고리의 다른 글

20231106_기록_틱택토  (2) 2023.11.06
20231103_기록_카드 뒤집기 게임  (1) 2023.11.03
20231101_기록_두 정수 사이의 합(프로그래머스)  (1) 2023.11.01
20231031_기록_isActive,setActive  (0) 2023.10.31
20231030_기록  (0) 2023.10.30