커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
카드를 없애는 함수를 불러오는 이유
undefined주차
북마크
조*근
댓글
5
추천
0
조회수
12
조회수
12
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


안녕하세요. 강의 잘보고 있습니다.

현재 4-6 카드(3)_뒤집기,매칭하기 강의를 보는 도중 의문이 생겨 질문드립니다.

public void checkMatched()
{
    string firstCardImage = firstCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name;
    string secondCardImage = secondCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name;


    if (firstCardImage == secondCardImage)
    {
        firstCard.GetComponent<card>().destroyCard();
        secondCard.GetComponent<card>().destroyCard();
    }
    else
    {
        firstCard.GetComponent<card>().closeCard();
        secondCard.GetComponent<card>().closeCard();
    }


    firstCard = null;
    secondCard = null;
}


현재 가르쳐주신 스크립트는 위와 같습니다.

그 중 두 장의 카드가 같으면 파괴시키는 destoryCard()함수를 굳이 Card에 있는 스크립트에서 불러오고 그 destroyCard() 함수는 Invoke()를 이용하여 1초 뒤에 destroyCardInvoke()함수를 부르고 있습니다.


(즉 현재는 card스크립트->destroyCard()->destroyCardInvoke() 의 3단계를 거치고 있습니다.)

    if (firstCardImage == secondCardImage)
    {
        firstCard.GetComponent<card>().destroyCard();       //1단계
        secondCard.GetComponent<card>().destroyCard();
    }


    public void destroyCard()                                            //2단계
    {
    Invoke("destroyCardInvoke", 1.0f);
    }


    void destroyCardInvoke()                                           //3단계
    {
        Destroy(gameObject);
    }


그냥 아래와 같이 만들면 똑같이 함수가 작동하는 것 같은데 3단계를 거친 이유가 있을까요?

그냥 GetComponent<>함수를 설명하기 위함인지, 안정성을 높이고 에러를 없애준다던가 다른 이유가 있을까요?

if (firstCardImage==secondCardImage)
        {
            Destroy(firstCard,1.0f); 
            Destroy(secondCard,1.0f);
        }










취소
 공유
취소
댓글 0
댓글 알림
나의얼굴