Поскольку это игра, я бы порекомендовал вам НЕ создавать экземпляры объектов во время цикла обновления. Из-за этого вы будете испытывать очень сильное заикание и отставание во время игры.
То, как вы хотите это сделать - при инициализации игры или на этапе загрузки контента - создать очередь, скажем, 100 пуль:
Queue<Bullet> bulletCache;
Затем заполните этот список 100 экземплярами маркера:
for (int i = 0; i < 100; i++)
bulletCache.Enqueue(new Bullet());
В вашей игре, когда вам нужно стрелять из пули, просто удалите одну из них, установите ее скорость, положение и т. Д. И дайте ей отрендериться. Когда он больше не виден (то есть ударил что-то, вышел за границы экрана и т. Д.), Поставьте его в очередь.
Таким образом, вы ничего не делаете в игровом цикле, а просто перерабатываете одни и те же объекты. Если вы сделаете это с таким большим количеством вещей в своей игре, у вас будет очень плавный игровой процесс. Если у вас появляется привычка создавать объекты в цикле обновления, сборщик мусора для Compact Framework (тот, что на телефоне) в какой-то момент включится, чтобы очистить их, и разрушит частоту кадров вашей игры.
Надеюсь, это поможет:)