Не получается сделать рандомное выпадение лута в юнити
Я делаю рандомное выпадение лута из сундуков. Есть 4 вида предметов и если тебе выпал один из них, то из других сундуков он больше не выпадет. Я уже делал список и удалял от туда предметы. Но всё бестолку. Первый раз работает нормально. Второй и третий - если особо повезёт. А четвёртый вообще никогда не работает. Помогите пж. Заготовка -
public List<GameObject> Loot;
if (UseBox)
{
int Rand = Random.Range(1, 5);
Debug.Log(Rand);
GameObject.Find("Box").GetComponent<UseObject>().Used = true;
if(Rand == 1 && !transform.GetComponent<Inventory>().BPad)
{
transform.GetComponent<Inventory>().BPad = true;
Loot.RemoveAt(Rand);
}
if (Rand == 2 && !transform.GetComponent<Inventory>().BPS)
{
transform.GetComponent<Inventory>().BPC = true;
Loot.RemoveAt(Rand);
}
if (Rand == 3 && !transform.GetComponent<Inventory>().BPhone)
{
transform.GetComponent<Inventory>().BPhone = true;
Loot.RemoveAt(Rand);
}
if (Rand == 4 && !transform.GetComponent<Inventory>().BPS)
{
transform.GetComponent<Inventory>().BPS = true;
Loot.RemoveAt(Rand);
}
}
А ты не удаляй из списка, а помечай как-нибудь.
у тебя 5 предметов. 1й (0й в массиве) - пусть книга.
Во-первых, и интервал тебе нужен от 0 до 4, а не от 1 до 5.
Во-вторых, пускай выпал 0. Тогда ты книгу удалил. Интервал сократился до 0 - 3, и на 0м теперь не книга, а, пускай, кот, который раньше был с индексом 1. А ты все еще думаешь, что у кота индекс 1.
через массив нет ? получить число элементов с него для рандома, удалять предметы по тому же id с массива и как только массив станет пустым перезагрузить его (по новой наполнить) и так по кругу