본문 바로가기

TIL

[TIL]2023-12-28 / 5일차 - 발표와 정리

 

오늘은 오전 시간 디버깅을 제외하면 코딩은 거의 하지 않고 조별 보고 겸 발표, 강의에 대한 설문과 피드백을 하고 이후 일정에 대한 공지를 하면서 하루를 마쳤다.

 

디버깅한 내용은 어제부터 우리를 골먹이던 카드 한개를 고르고 나머지 한개를 고르지 않을 시 5초 후 뒤집히는 카드 효과 적용 후 카드 선택이 여러개가 동시에 되던 문제를 해결했다.

 

        if (gameManager.instance.firstCard == null)
        {
            gameManager.instance.firstCard = gameObject;
            //처음 카드 선택한 시간
            flipTime = Time.time;
            Invoke("closeCardInvoke", 5.0f);
        }
        else
        {

기존에 카드를 뒤집는 코드의 조건이 다음과 같은데

 

    void closeCardInvoke()
    {
        transform.Find("back").GetComponent<SpriteRenderer>().color = new Color(255f / 69f, 170f / 255f, 169f / 255f);
        anim.SetBool("isOpen", false);
        transform.Find("front").gameObject.SetActive(false);
        gameManager.instance.isLock = false;
        gameManager.instance.firstCard = null;
        gameManager.instance.secondCard = null;
        Debug.Log("a");
   }

 

이 코드가 null로 바꾸는 부분에서 Invoke로 인해 시간 차로 문제가 발생한다고 생각되어 디버그 로그를 통해 확인해보게 되었다.

 

Debug.Log를 작성하여 보니 카드가 매칭이 되어 사라졌음에도 카드를 뒤집을 때 closeCard가 2번 불려오고(정상적인 상황) 이때 5초 뒤 뒤집히는 코드가 Invoke 되어 있는 것이 취소되지 않고 실행되어 또 명령이 실행되어 다시 null 상태가 된 것을 확인하였다 (버그 원인)

 

    public bool check = false;

    public void openCard()
    {
    //게임 매니저의 카드 선택시 다른 카드 잠그는 코드 불러오기
        if (isSelf || gameManager.instance.isLock)
            return;
	}
    
    
                check = true;
            Invoke("delaycloseCard", 5.0f);
    
    public void closeCard()
    {
        isSelf = false;
        Invoke("closeCardInvoke", 1.0f);
    }
    
	public void delaycloseCard()
    {
        if (!check)
            return;
        closeCardInvoke();
    }

이와 같은 내용들을 card.cs에 추가하여 invoke 되던 명령문을 취소할 수 있도록 하였다.

 

이후 조별 발표를 보며 다양한 메모를 남기게 되었다.

 

더보기
  • <다른 조들이 만든 인상적인 기능들 - 이후에 이용 가능할 것들>
  • 점수 초기화 버튼
  • 시작할 때 카드 한번 다 보여주고 뒤집는 연출!
  • 두번째 카드 선택 남은 시간 게이지로 보여주는 연출
  • 카드 매칭 때 반짝이 이펙트
  • 사운드바로 음량 조절(데이터 저장하여 게임 재시작 시에도 사용)
    • 시연 발표 시에도 안 그래도 너무 큰 사운드 작게 조절 할 수 있어서 좋은듯
  • 잠긴 스테이지는 자물쇠 아이콘, 다음 난이도 해금 조건은 이전난이도의 ‘클리어’로 하는 게 좋았을 듯
  • 엔딩 크레딧
  • 게임을 진행하며 모으는 재화 시스템

 

오늘은 기존에 1주일 간 같이했던 팀원들과 헤어지게 되어 아쉬움을 남기며 하루를 큰일 없이 마무리 했다