계속 찾다가 도저히 못 찾겠어서 기능을 하나씩 빼가면서 실행해보니까 뭐가 문제인지 알겠더라
private HashSet<int> usedItemNumbers = new HashSet<int>();
float rand = Random.value;
int newItemNum;
if (rand < 0.1f)
{
newItemNum = GetUniqueRandomNumber(400, 407, usedItemNumbers);
}
else if (rand < 0.4f)
{
newItemNum = GetUniqueRandomNumber(200, 220, usedItemNumbers);
}
else
{
newItemNum = GetUniqueRandomNumber(100, 121, usedItemNumbers);
}
이걸로 랜덤 아이템 종류를 받아와서
private int GetUniqueRandomNumber(int min, int max, HashSet<int> usedNumbers)
{
int num;
do
{
num = Random.Range(min, max);
} while (usedNumbers.Contains(num)); // 중복된 경우 다시 시도
return num;
}
이 코드로 아이템 정보를 중복을 피하면서 불러왔는데
여기서 usedItemNumbers.Clear(); 이걸로 아이템 번호를 초기화 하고 불러왔어야 하는데
저걸 빼 먹고 아이템 정보를 불러오니까 중복을 피하고 피하고 피하다가 중복되지 않는 숫자가 없으니까
무한 루프가 돌아가는 거였음 진짜 개멍청하네 ㅋㅋㅋㅋㅋㅋ
나라면 리스트안에 뽑을 수 있는 경우의 수를 넣어두고 랜덤으로 0~리스트.count 사이의 값을 뽑아오는걸 쓸거 같은데
200, 201... 219 중에서 205만 못쓴다고 하면 205빼고 나머지를 리스트에 담고 랜덤으로 리스트에서 하나 뽑는거지
리스트가 비어있으면 예외처리해주고..
초보라 그런건 신경도 못씀 ㅋㅋ
나랑 비슷한버그있어서 괜시리 반갑네 ㅋㅋㅋㅋㅋㅋㅋ
와일문 무서워