Wataru, Получается с точки зрения теории лучше использовать список, а не очередь ? Я тут проверил производительность, и оказалось что список лучше, но я не до конца понимаю почему, ведь в списке мы ищем нужный элемент, а в очереди просто извлекаем первый элемент, а потом добавляем в конец
Wataru, Для примера, есть автомат, у него в магазине(это наш лист или очередь) 30 патронов, все они false; Мы нажали на спусковой крючок и произошел выстрел, изъялся один патрон из магазина , его активность стала true, он куда-то попал и его активность снова стала false; Мы можем стрелять по одному патрону , а можем очередью и тд.
Wataru, По сути у каждого объекта нашего листа(очереди) есть свойство bool SetActive; В упрощенном виде activeInHierarchy получает get из этого свойства. Опять же для простоты считаем что мы извлекаем объект у которого SetActive = false и меняем его SetActive на true, производим какие-то действия и SetActive снова стал false
Руслан ., Код пишу на С#, на каком решении оптимальнее остановиться ? Изначально 200 объектов, нижний предел до которого они могут опуститься 150, высший предел 250. На счет затрачиваемой памяти на один объект ничего не могу сказать. И да, Ypos в каждой группе состоящих из 8-16 объектов будет одинаковым.
А не могли бы вы конкретнее написать что вы хотите делать, в одном и другом случае, и почему именно действие должно выполняться при соприкосновении с несколькими объектами ?
Да, суть очереди в том что ее нельзя просмотреть, мы можете посмотреть только первый элемент, но вам и не нужно ее просматривать, вы точно знаете что элементы в очереди размещаются именно в том порядке, в каком нужно воспроизводить движение.
positions.Dequeue() извлекает первый элемент из очереди. И вы должны переместить копию вашего персонажа именно к этой точке. Опять же перемежение можно организовать в функции похожей на обычное движение вашего персонажа, за исключением что вы не можете явно им управлять, а движение будет продолжаться пока вы не достигнете нужной точки. Если нужно хранить только координаты, так как scale и rotation не меняется при игре, тогда можно хранить очередь состоящую из Vector2, сохраняя в очередь позицию по х и y из трансформа персонажа, это сэкономит память.
Akina, Там хранятся позиции платформ, когда персонаж теряет из виду нижние платформы они перемещаются вверх через определенное время. Но мне точно нужно знать какие платформы находятся ниже персонажа, а какие выше, что бы спавнить врагов выше персонажа и вне поля его видимости, для этого я сортирую список и бинарным поиском узнаю какие платформы выше персонажа. В данный момент позиции хранятся в List, все работает так как я хочу, но мне интересен момент скорости работы разных решений этого вопроса. Большое спасибо за такой быстрый ответ )