스파르타 코딩클럽/TIL작성

사전캠프 5일차 [게임 개발이 처음이어도 쉽게 배우는 모바일 게임 개발 4 주차 완강]

Dev_Jen 2025. 6. 27. 17:13
반응형

1. 오늘 학습 키워드

  • 시간 측정 + UI 표시 (Time.deltaTime, "N2" 포맷)
  • 카드 프리팹 반복 생성 + 격자 배치 (Instantiate, i % 4, i / 4)
  • 카드 이미지 랜덤 섞기 (OrderBy, Resources.Load<Sprite>)
  • 카드 클릭 시 뒤집기 애니메이션 (Animator.SetBool("isOpen", true))
  • 카드 클릭 → GameManager에 카드 등록 → 두 장 비교
  • 일치 시: DestroyCard() 호출 → 0.5초 후 카드 제거
  • 불일치 시: CloseCard() 호출 → 0.5초 후 다시 뒤집기
  • 남은 카드 수 cardCount로 추적 → 0되면 게임 종료 + Time.timeScale = 0
  • Retry 버튼으로 재시작 (SceneManager.LoadScene, Time.timeScale = 1)

2. 오늘 학습 한 내용을 나만의 언어로 정리하기

1. Random 클래스 충돌 오류 (System.Random vs UnityEngine.Random)

📌 문제 코드

arr.OrderBy(x => Random.Range(0f, 7f)).ToArray();

⚠️ 오류 메시지

CS0104: 'Random' is an ambiguous reference between 'UnityEngine.Random' and 'System.Random'

🎯 원인

  • Random이라는 클래스가 System과 UnityEngine에 모두 존재해서 충돌 발생
  • 둘 다 using 되어 있는 경우 컴파일러가 어떤 Random인지 몰라서 오류 발생

✅ 해결 방법

  • 유니티에서 사용하는 Random.Range()를 명확히 지정:
rr.OrderBy(x => UnityEngine.Random.Range(0f, 7f)).ToArray();

2. Resources.Load<Sprite>()로 이미지 동적 로드

📌 새롭게 알게 된 코드

Resources.Load<Sprite>($"rtan{idx}");

✅ 동작 설명

  • Assets/Resources/ 폴더에 있는 "rtan{idx}" 이름의 스프라이트를 런타임에 불러옴
  • 문자열 보간을 사용하여 동적으로 파일명을 지정

✅ 주의할 점

  • 파일 경로에서 확장자 (.png)는 생략
  • 에셋은 반드시 Resources 폴더 하위에 있어야 함
  • Resources.Load는 자주 쓰면 퍼포먼스 저하 → 간단한 경우에만 사용 권장

4. 내일 학습 할 것

유니티 게임 개발 5주차


5. 메모


시간이 밀려서 그런지 5주차까지 완강하지 못했다..ㅠㅜ

주말에 나머지 5주차까지 완강해야지!

반응형