스파르타 코딩클럽/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주차까지 완강해야지!
반응형