@maxemga

Как сделать рамдомный спавн объекта без повторения?

У меня есть четыре прямоугольника разных цветов и мне нужно чтобы они рамдомно спавнились на четырех заданных точках
Как сделать из них рамдомный их спавн на точках я знаю, но как сделать так чтобы они спавнились без повторения, я не знаю
Тоесть заспавнился красный куб и он больше не может спавниться на остальных трех позициях и нужно чтобы в этих четырех точках было по одному объекта каждого цвета
  • Вопрос задан
  • 65 просмотров
Решения вопроса 2
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Сделали список обектов, взяли рандомом номер объекта из списка, заспаунили объект, удалили его из списка. Взяли рандомом следующий из оставшихся в списке...
Ответ написан
ShockWave2048
@ShockWave2048
imposter
Цвета в список (List) и перемешиваем. Затем по очереди изымаем.

private static Random rng = new Random();  

public static void Shuffle<T>(this IList<T> list)  
{  
    int n = list.Count;  
    while (n > 1) {  
        n--;  
        int k = rng.Next(n + 1);  
        T value = list[k];  
        list[k] = list[n];  
        list[n] = value;  
    }  
}


еще такой есть на Linq, но не проверял
var shuffled = myList.OrderBy(x => Guid.NewGuid()).ToList();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы