2025.01.14 (화)

윤혜진·2025년 1월 14일
0

TIL

목록 보기
5/42
post-thumbnail

📍오늘 목표

  • 4주차 강의 <르탄이 카드 뒤집기 게임> 완성
  • 4주차 숙제 완료
  • <르탄이 카드 뒤집기 게임> 게임 보완 (미완료)
    • 카드가 뒤집히기 전에 다른 카드를 뒤집지 못하도록 하기
    • 레벨, 난이도 추가
  • 람다 표현식OrderBy() 자습 (미완료)

📍배운 것

  • Invork의 사용 (복습)

    • Invork로 딜레이를 걸어줄 때, 왜 바로 GameManager에서 Invork를 쓰지 않는거지? 싶었는데, 딜레이를 걸어줘야 하는 메서드가 GameManager가 아닌 Card에 있어서였다.

    • 또한 Invork를 사용하려면 메서드의 이름을 문자열로 넣어주어야 하기 때문에, CloseCard() 메서드와 CloseCardInvoke() 메서드를 나눠 만들어주어야 했다.

    • Invoke 말고 딜레이를 주는 다른 방법은 없는 걸까? 시간이 난다면 따로 찾아보는 것도 좋을 듯.

      public void DestroyCard()
      {
          Invoke("DestroyCardInvoke", 1.0f);
      }
      
      void DestroyCardInvoke()
      {
          //카드를 없애라
          Destroy(gameObject);
      }
      
      public void CloseCard()
      {
          Invoke("CloseCardInvoke", 1.0f);
      }
      
      void CloseCardInvoke()
      {
          //열었던 카드를 다시 뒤집어라
          anim.SetBool("isOpen", false);
          front.SetActive(false);
          back.SetActive(true);
      }

📍겪은 어려움

  • 카드가 뒤집히기 전에 다른 카드를 뒤집지 못하게 하려고 GameManagerisClickable 변수를 만들었는데 생각처럼 잘 안된다…

    • 내가 생각한 방식:

      1. 먼저 isClickabletrue로 세팅한다.
      2. 카드 뒤집기는 true 상태일 때만 시도할 수 있다.
      3. 카드를 뒤집는 동안에는 false가 되도록 한다.
      4. 모든 과정이 끝났을 때, isClickable 를 다시 true로 만든다.
    • 하지만 카드를 뒤집는 과정이 생각보다 복잡해서 내 처음 생각대로 되지 않았다.

    • 이하 나의 삽질:

      1. 카드의 뒷면이 클릭될 때마다 실행되는 메서드 OpenCard()에, isClickabletrue일 때만 내가 클릭한 카드 정보를 넘겨주도록 수정했다.

      2. 카드 비교, 뒤집기, 없애기는 모두 Matched() 메서드 안에서 처리되고 호출되므로 Matched() 메서드 안에 들어가면 isClickablefalse로 바꿔주도록 했다.

      3. “모든 과정”이 끝난 뒤라는 건, 카드 뒤집기 메서드인 CloseCardInvoke()까지 끝난 뒤일테니 CloseCardInvoke()내부에 isClickabletrue로 바꾸는 코드를 넣어주었다.

      4. 결과: 딜레이 문제가 해결되긴 커녕 없던 오류가 생겼다…

    • 일단 시간이 없어서 오늘까진 혼자서 문제가 뭔지 살펴본 뒤, 내일까지 해결이 안 된다면 튜터님께 여쭤볼 예정...🥲

📍회고 및 반성

  • 삽질을 너무 오래했다. 어느 정도까지가 적당한 삽질일까…
    • 30분~1시간을 마지노선으로 두고 그 이상 시간을 투자하게 될 것 같으면 바로 도움을 청해보는 게 맞는 것 같다. 다음에는 꼭 염두에 두기!!

0개의 댓글

관련 채용 정보