Unity_본캠프

[내일배움캠프 1일차] 카드 뒤집기

티백고래 2025. 4. 7. 21:43

1. 오늘의 내용

카드 뒤집기를 제작한다.

1부터 10까지 다 쓰는 것은 아니고, A기능을 구현하는데 어떻게 하더라~같은 느낌으로 쓸 예정이다.

 

2. 실습 내용

 

일단 결과물부터 확인해보자.

카드를 뒤집으면, 앞면이 나오고, 맞으면 사라진다!

그 중 카드는 랜덤으로 뽑힌다. 

카드는 분명 prefabs일 것이다.

그럼 여기에 쓰인 prefabs의 수는?

@: 앞면이 같은 카드가 2장씩 있잖아. 총 카드가 16장이니 카드 프리팹의 종류는 8개 아닌가?

 

 

 

 

 

 

 

정답: 아니다. 1개다.

 

그렇게 해도 안될…건 없겠지만. 복사 붙여넣기 복사 붙여넣기…는 귀찮다. 그보다도 양이 많다. 20장만 되어도 10개는 찍어내야한다.

그런데, 이걸 가볍게 돌리는 방법이 있다.

(그리고 난 여기서 왜 게임 내부에 Resources 폴더가 있는지, 그 폴더 안에 파일 이름들이 이름n으로 작성되어있는지 깨달았다. (*n은 숫자) )

 

먼저, 스파르타에서 준 이미지 파일들을 보자.

작업한다고 전부 Resources 폴더에 넣어두긴 했는데, 보면 rtan0~rtan7까지 적힌 걸 볼 수 있다.

같은 르탄이니까 0부터 7까지 쓴 거라고 그냥 막연하게 생각했는데….

 

public void Setting(int number)
{
    idx = number;
    frontImage.sprite = Resources.Load<Sprite>($"rtan{idx}");
}

여기서 사용하는 걸 보고 이해했다.

아, 이래서 0부터 번호를 넣는거구나.

 

Q. 그래서 저 코드의 의미가 뭔데요?

A. 유니티 안에 있는 기능입니다. Resources.Load<데이터종류>를 통해, Resources폴더 안에 있는 파일을 파일명으로 불러오는 기능이죠.

 

즉, 저 코드를 간단히 해석하자면, frontImage로 명명된 sprite 파일에다가 rtan(넘버링) 파일을 불러오는 것이다.

idx(int 데이터)에 0이 입력되었다면 rtan0이, idx에 4가 입력되면 rtan4파일이 불려지는 것.

한 캐릭터의 파일을 넘버링으로 호출할 수 있고, prefabs를 여러 개 찍을 필요도 없으니 일도 줄어든다.

물론, 저걸 쓰기 전에 public SpriteRenderer frontImage; 를 이용하여 SpriteRenderer를 호출하는 걸 잊지 말도록 하자.

 

3. 오늘의 오류

 

분명 버튼을 넣었고, 버튼을 눌러야 카드가 오픈되는 구조로 만들었는데.

한 곳을 누르니까, 계속 버튼을 누를 때마다 카드가 차례대로 까이는 오류.

 

처음엔 이유를 몰랐다.

사유: 코드 제대로 넣었다. 애초에 코드 내에서 '차례대로 패를 공개하는' 코드따위 존재하지 않았다. 버튼을 눌러야 작동하도록 되어있었으니 '버튼의 범위'가 오류가 났다고 봐야한다.

그런데 버튼에 오류? …오류 날 게 어디있지? 캔버스 크기에 맞추고…다 맞췄는데….

그리고 내 머리에 정답이 안 떠오를 때는 팀원에게 물어보는 게 답이다. 깔끔하게 위의 영상을 보내드리고, help를 외쳤다.

 

코드에는 문제가 없으니 답은 unity. 그렇게 prefabs를 함께 확인해본 결과.

 

버튼의 범위가 말도 안되게 넓다. 그런데 저 칸에는 마땅히 사이즈라고 할 것이 없다.

찾았다!

그렇다, 범인은 이 놈이었다.

오류 당시의 사이즈. 사이즈가 화면 사이즈랑 똑같은 걸 알 수 있다.

이걸 100*100(하얀 상자 사이즈)으로 조정해주자.

딱 맞는다.

정말…간단한데 어이없는 오류였다.

하지만 이렇게 마주했으니, 다음에 또 뭔가 이상하면 더 세세하게 살펴볼 수 있을 것이다. 좋게 생각하자.

 

4. 내일 할 일

사실 오늘 카드 뒤집기를 열심히 한 이유가 있다.

이유는 바로 팀 프로젝트. 첫주차 미니 프로젝트의 게임이 카드뒤집기이다.

개인 스테이지를 만들어보기 위해서라도, 내일도 카드 뒤집기를 한 번 뒤적이고 코드 조정도 해볼 예정이다.