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

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

SP_1217 2024. 4. 16. 00:32

어우...그동안 제 개인실력 향상을 위해 집중만 했더니 글을 쓰는것도 거진 날려먹었었네요...

그래도 긴시간동안 정비를 마치고 이제 본 캠프의 시작으로 배운 내용을 다시 되짚어 보도록하겠습니다!

 

1. 카드 뒤집기 게임속 팀원들과 서로 역활분담으로 원하는 기능을 만들어 넣어보기!

 

 

미리 만들어본 내용속에서 제가 선택받은 일은 카드를 뒤집을 시 색을 알아볼수 있게 만들어보는 것이었습니다.

처음에는 어떻게 다가가야할까 고민이 참 많았습니다. 색을 변경하기 위해 Unity Spirte Rendere에 접근하거나 까지는 알것같았으나 그 이외에는 전혀 감이 오는게 없었으니까요...ㅋㅋ 그래서 선생님께 쏜살같이 달려가서 같이 이야기를 하며

 

public void ChangeColor(Color color)
{
    back.GetComponent<SpriteRenderer>().color = color;
} 
// Spirte Rendere Color에 접근하여 카드 뒷면의 색을 불러오기위한 작업



이런식으로 스크립트에서 색을 불러오기위해 미리 코드를 작성해주고

 

    else
    {
        firstCard.CloseCard();
        secondCard.CloseCard();
        firstCard.ChangeColor(Color.gray);
        secondCard.ChangeColor(Color.rad);
    }
    
//카드 오브젝트가 파괴되지않을시 Card Color 변경

 

실행되고있는 카드 if문에 적용되어있는 카드가 Destroy 명령어로 파괴되어 있지 않을시에 카드는 다시 뒤집어지고 미리 저장돼어있는 Spirte Renderer Color의 색을 변경하는것으로 1차적인 방법은 의외로 쉽게 끝났습니다.

 

그런데 제가 직접 플레이를 해보니 카드가 전부 뒤집어지면 더이상 카드의 색은 변하지 않았고 이걸 다른 방법으로 처리하기 위해 카드가 두번째 뒤집어 질때는 첫번째 변경된 카드의 색을 원래대로 돌려주는 기능이 필요로 했습니다.

 

firstCard = null;
secondCard = null;

//파괴되어있지 않은 오브젝트는 Null에 저장돼어있는 상태였기에



public Card thirdCard;
public Card fourthCard;
//새롭게 색을 저장시켜줄 함수를 선언하고



thirdCard = firstCard;

fourthCard = secondCard;

//Null로 날라간 카드를 새로운 세번째 네번째 카드로 집어넣었습니다.

 

하지만 이렇게 작업하면 게임이 처음 Void start나 Void Awake 할시에 아무런 색도 저장돼어있지 않은 카드 오브젝트는 분명 오류가 난다고했고 실제로도 오류가 났었습니다. 그래서 이걸 해결하기 위해

    if (thirdCard != null && fourthCard != null)
    {
        thirdCard.ChangeColor(Color.white);
        fourthCard.ChangeColor(Color.white);
    }
    thirdCard = firstCard;
    fourthCard = secondCard;
    firstCard = null;
    secondCard = null;
//1,2Card에 저장된 색을 원래색으로 바꾸거나 다른색으로 저장

 

새로운 if 를 작성하여 != null에 기입하고 색을 변경하는것으로 오류는 해결되었습니다!