
팀프로젝트를 진행하면서 내가 만든 카드만들기 세팅이다
첫번째로는 기본 List를 생성해주고, 해당 List에 사용할 이미지의 이름들을 넣어주었다
그리고 총 카드의 사이즈 int형을 생성해 주었고 , 카드를 뒤섞고 넣어줄 비어있는 List도 생성해주었다
//예시 List 카드 생성
List<string> cards = new List<string>
{
"a_0",
"a_1",
"a_2",
"a_3",
"a_4",
"a_5",
"a_6",
"a_7"
};
//List 카드 사이즈
public int Card_size = 0;
//총 카드 갯수
public int leftCards = 0;
//비어있는 카드 리스트 생성
List<string> MainCard = null;
그리고 인스턴스 초기화를 해주었다
private void Awake()
{
if(Instance == null)
Instance = this;
isCanInput = true;
}
Start에서
switch 구문을 사용하여 GameManager 스크립트의 stageLevel을 가져와 난이도 별로 카드의 개수를 설정해 주었다
void Start()
{
//Card Size Set
// *enen num plz*
switch(GameManager.stageLevel)
{
case 0:
//ezsy Size Set
Card_size = 12;
break;
case 1:
//Normal Card Size Set
Card_size = 20;
break;
case 2:
//hard Size Set
Card_size = 30;
break;
case 3:
//Hidden Card Size Set
Card_size = 10;
break;
}
GameStartSetting(Card_size);
}
그 다음으로 void GameStartSetting(int MaxCard) 를 생성하여
빈 리스트 Maincard 에 Card_size만큼의 리스트를 생성해 주었고
카드 맞추기는 카드가 2개 맞추는 게임이니, 최대 장수 / 2 를 해주었다
그리고 맨처음 만든 자료가 들어간 cards 리스트에서 Random을 넣어 카드를 뒤섞게 만든다음
Maincard 리스트에 cards 리스트를 최대장수/2 만큼 넣어준다
Maincard 리스트는 같은카드가 2장이 되야 하므로, 자기 자신을 복사해서 한번더 넣어준다
cards 리스트에 Random을 넣은것 처럼 Maincard에 Random을 넣어 뒤섞게 만든다
그 후 게임 난이도에 맞게 position 값을 적용하여 카드 개수만큼 카드를 생성해주었다
void GameStartSetting(int MaxCard)
{
Maincard = new List<string>(Card_size);
Debug.Log(Maincard.Count);
MaxCard = MaxCard / 2;
cards = cards.OrderBy(x => Random.Range(0f, 8f)).ToList();
Maincard = cards.Take(MaxCard).ToList();
for (int j = 0; j < MaxCard; j++)
{
Maincard.Add(Maincard[j]);
}
//Test disable
Maincard = Maincard.OrderBy(x => Random.Range(0f, 24f)).ToList();
//
for (int i = 0; i < Maincard.Count; i++)
{
GameObject go = Instantiate(card, this.transform);
float x = 0.0f;
float y = 0.0f;
switch(GameManager.stageLevel)
{
case 0:
//ezsy Size Set
x = (i % 3) * 1.4f - 1.4f;
y = (i / 3) * 1.3f - 2.4f;
break;
case 1:
x = (i % 4) * 1.4f - 2.1f;
y = (i / 4) * 1.3f - 3.0f;
break;
case 2:
x = (i % 5) * 1.1f - 2.2f;
y = (i / 5) * 1.3f - 4.0f;
break;
case 3:
x = 0.0f;
y = 0.0f;
break;
}
go.transform.position = new Vector2(x, y);
go.GetComponent<Card>().Setting(Maincard[i]);
}
//Card Full Count
leftCards = Maincard.Count;
}
기존에 배웠던 array로 카드 만드는 방식이 아닌 List로 생성을 했고
if, else if문이 아닌 switch 문을 사용하였다
'UNITY' 카테고리의 다른 글
| [내일배움캠프 21일차 TIL] 메타버스 구현 - 트러블슈팅 (1) | 2025.07.28 |
|---|---|
| [내일배움캠프 5일차 TIL] 애니메이션 오류 (0) | 2025.07.04 |
| [내일배움캠프 3일차 TIL] 코루틴 (Coroutine) (0) | 2025.07.02 |
| [내일배움캠프 2일차 TIL] Random 및 List 복사 (0) | 2025.07.01 |
| [내일배움캠프 사전캠프] 움직이는 풍선을 지켜라 1-3 ( 충돌 구현 및 점수판 표기 ) (1) | 2025.06.18 |