스파르탄캠프/본격적인 캠프

노베이스의 게임개발(본 캠프)

SP_1217 2024. 4. 18. 21:37

꺼진 코드도 다시보았다, 그만 보자...

사전때와 본 캠프때 배웠던 내용을 다다시 했을뿐이고 강의도 안보고 했을뿐인데 모든게 뜻대로 안되는 곳입니다...


코드는 이상이 없는데....

    public void Mached()
    {
        if (firstCard.idx == secondCard.idx)
        {
            firstCard.DestroyCard();
            secondCard.DestroyCard();
            cardCount -= 2;
            if (cardCount == 0)
            {
                Time.timeScale = 0.0f;
                endTxt.gameObject.SetActive(true);
            }
        }
        else
        {
            firstCard.ChangeColor(Color.red);
            secondCard.ChangeColor(Color.red);
            firstCard.CloseCard();
            secondCard.CloseCard();
        }

        if (thirdCard != null && fourthCard != null)
        {
            thirdCard.ChangeColor(Color.green);
            fourthCard.ChangeColor(Color.green);
        }

  

        firstCard = null;
        secondCard = null;
        thirdCard = firstCard;
        fourthCard = secondCard;

?????????????????????

이상합니다, 많이 이상합니다 분명 기억속에 루틴대로 저는 로직을 작성했을 뿐인데 지금 생각한것과 많이 다른 부분들이 보입니다. 코드에는 문제가 없고 아무 이상도 없고 다 이상없는데 이것만 한시간을 붙잡았습니다...그러다가 진짜 도무지 안될것같아서 선생님에게 후딱 달려가 HELP를 요청했습니다. 물론 답을 바로 알려주지 말아달라고 사정하면서 말이죠...그런데 상상치도 못한곳에서 이유가 생겼던 겁니다.


?????????????

        thirdCard = firstCard;
        fourthCard = secondCard;
        firstCard = null;
        secondCard = null;

        firstCard = null;
        secondCard = null;
        thirdCard = firstCard;
        fourthCard = secondCard;
        
        //서순을 바꾼것만으로 제기능을 한다

 

예, 그렇습니다 순서는...바꾸는것 만으로도 기능을 찾아 갑니다. 

        else
        {
            firstCard.ChangeColor(Color.red);
            secondCard.ChangeColor(Color.red);
            firstCard.CloseCard();
            secondCard.CloseCard();
        }

        if (thirdCard != null && fourthCard != null)
        {
            thirdCard.ChangeColor(Color.green);
            fourthCard.ChangeColor(Color.green);
        }
//이것도 정상 기능

        else
        {
                if (thirdCard != null && fourthCard != null)
        {
            thirdCard.ChangeColor(Color.green);
            fourthCard.ChangeColor(Color.green);
        }
            firstCard.ChangeColor(Color.red);
            secondCard.ChangeColor(Color.red);
            firstCard.CloseCard();
            secondCard.CloseCard();
        }
//이것도 정상 기능

코드는 순서가 중요하며 위에부터 아래로 실행이 되는 순서이기 때문에 처음에 넣었던 코드의 경우에는 firstCard = null, thirdCard = firstCard < 아무것도 없는 상태에서 자꾸 세번째 카드에 넣으려고만 하니 원하는 색이 들어가지 않았던 겁니다. A 는 B가 아니라 A에 B를 넣어라 였던거죠.  그러므로 처음부터 원하는 방식을 진행할려면 처음부터 세번째, 네번째 카드에 먼저 넣어놓고 그 다음에 A = NULL 을 해야 제가 원하던 방식의 색 배치가 완료되던 것이었습니다. 분명 저번에도 배운것 같은데 정말 단순한 실수도 놓치지않게 조심해야할것 같습니다.


 

오늘 하루를 얼른 마무리를 해야하기에...

이제부터는 Audiosource와 Clip에 관하여 또 C#으로 스크립트를 해야하기에...하하

물론 소리를 넣는 방식은 강의 자체에서 매우 짧게 나왔고 또 간단해 보였지만 강의를 안보고 도전하는것이기에 더 의미가 있지 않나 싶긴합니다 어디까지 가능할까 부딪혀보는것도 하나의 묘미였던것 같습니다.