TIL - 23.12.26

Amberjack·2023년 12월 26일
0

TIL

목록 보기
4/83
post-custom-banner

오늘 있었던 일

오늘은 TIL 작성법 특강을 듣고 저번 주에 이어 미니 팀 프로젝트 진행을 했다. 나는 오늘 결과 화면에 점수 넣기 및 나가기 버튼을 추가했다. 어쩌다보니 내가 맡은 일들이 너무 빨리 끝나는 일들이라 끝내고 유니티 공부를 따로 하려 했었다. 그런데 문제가 터졌다!!!

문제점!!!

팀원분께서 카드를 뒤집었을 때 서로 다른 카드면 남은 시간을 감소시키는 코드를 작성하셨다. 이 때 변수가 하나 겹친 것이었다.

바로 해당 코드의 gameManager.I.time이 모든 일의 발단이었다.

내 코드는 첫 번째 카드를 뒤집고 난 후, 5초동안 두 번째 카드를 뒤집지 않는다면 첫 번째 카드를 다시 뒤집는 코드였다. 해당 코드에 팀원분이 작성하신 코드를 병합하고 실행하자 첫 번째 카드를 뒤집고 두 번째 카드를 뒤집을 때 firstCard가 NULL을 참조한다는 에러가 발생했다.

이유는 간단했다. firstCard를 뒤집고 secondCard를 뒤집어서 틀렸을 경우, gameManager.I.time이 감소되어 if문의 조건이 true가 된 것이었다. 때문에 firstCard를 뒤집기 위해 참조를 하지만 이미 destroy된 후이기 때문에 NULL 참조 에러가 발생한 것이다.

해결 방법...

이 문제를 깔끔하게 해결하기 위한 코드를 찾아보았다. 코루틴, Invoke, DateTime을 활용한 시간 비교 등 여러 코드를 찾아보았지만 내 문제를 해결할 방법은 찾지 못했다...

코루틴과 Invoke의 경우, 5초를 지연시키는 코드였기 때문에 5초 안에 secondCard가 뒤집어졌을 경우를 해결하지 못했다.

DateTime의 경우는 내가 if문을 잘못 작성한 것인지 이상하게 작동했다. 게임 시작 후 첫 번째 카드의 경우만 동작하고 나머지는 뒤집자마자 바로 다시 뒤집어졌다.

해결 방법

결국 gameManager.I.time과는 별개의 변수를 하나 더 만들어 사용했다...

느낀 점

이 문제를 해결할 다른 좋은 방법이 있을 것 같은데 아직 코딩의 수양이 부족한 것 같다...
이번에 뼈저리게 느낀 만큼 코딩 공부, 작심삼일하지 말고 열심히 하도록 TIL를 열심히 써야겠다!

post-custom-banner

0개의 댓글