● 오늘 할일
뽑기미니게임 추가미니게임 보상탑승물NPC추가
● 오늘의 트러블 슈팅
#1 코루틴 문제
뽑기를 구현하다가 한번 뽑기가 한번이 아닌 중복으로 되는 문제를 발견했다.
코루틴 안에서 뽑기 결과 리스트가 반환이 되고 나서 뽑기 결과 씬으로 넘어가고 싶었기 때문에
아래와 같은 코드를 작성했다.
while (true)
{
yield return GetGachaRewards(count);
//뽑기 쿠폰 사용
m_GachaCoupon.Use(count);
//뽑기 결과 씬으로 이동
LoadScene("GachaResult", m_GachaRewards);
}
원인을 찾아보니 yield return는 IEnumerator만 반환 가능하기 때문이었다.
GetGachaRewards()는 리스트를 반환하고 있었고 이 코드 대로라면 즉시 반환이 되므로 반복문이 빠르게 실행
그 결과 중복된 뽑기 보상이 계속 추가 되는거였다.
방법은 여러가지 있지만 ( GetGachaRewards를 IEnumerator로 변경 등)
나는 중복 방지로 bool값을 선언해서 한번밖에 실행이 안되도록 수정하였다.
bool isGacha = false;
while (true)
{
//isGacha가 false될때까지 대기
yield return new WaitUntil(() => !isGacha);
// true로 하면서 한번만 실행
isGacha = true;
m_GachaCoupon.Use(count);
GetGachaRewards(count);
LoadScene("GachaResult", m_GachaRewards);
}
중복 없이 1번도 10번 뽑기도 잘 작동 하였다!
▼ 해결 영상
'과제' 카테고리의 다른 글
[Unity,C#] 유니티 입문 팀 프로젝트 개발 1일차 (0) | 2025.02.24 |
---|---|
[Unity,C#] 메타버스 제작 과제 4일차 (0) | 2025.02.20 |
[Unity,C#] 메타버스 제작 과제 2일차 (0) | 2025.02.18 |
[Unity,C#] 메타버스 제작 과제 1일차 (0) | 2025.02.17 |
[TextRPG-팀 프로젝트] 기반 설계 (0) | 2025.02.10 |