Как обновить несколько экземпляров класса, которые появляются на протяжении всей игры?

Новичок здесь, я создаю клон Flappy Bird, используя XNA, и до сих пор у меня не было никаких неразрешимых проблем, но я просто не знаю, как действовать на нерест труб.

У меня есть класс pipe, и мне удается создать его экземпляр на основе таймера в основной функции обновления игры (я знаю, что этот канал будет создан только один раз):

elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

if (elapsedTime == 1.0f)
{
    Pipe pipe = new Pipe();
}

Проблема в том, что я не могу вызвать функцию pipe.Update() в основном обновлении игры, поскольку "труба" еще не создана! И в любом случае, если мне нужно создать несколько экземпляров Pipe.cs, как я могу ссылаться на их соответствующие функции Update ()?

1 ответ

Решение

Чтобы создать несколько pipesВы можете использовать список и простой for петли (я добавил spawntime фактор, чтобы труба появлялась каждые 5 секунд, чтобы дать вам представление о том, как вы могли бы появиться):

List<Pipe> pipes = new List<Pipe>();
int spawnfactor = 5;
int spawns = 0; //or 1, if you want the first spawn to occur at 1 second

protected override void Update()
{
    elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

    if (elapsedTime == spawnfactor * spawns)
    {
        pipes.Add(New Pipe());
        spawns++; //keep track of how many spawns we've had
    }

    for (int i = 0; i < pipes.Count; i++)
    {
        pipes[i].Update();//update each pipe in the list.
    }
}

protected override void Draw()
{
    for (int i = 0; i < pipes.Count; i++)
    {
        pipes[i].Draw();
    }
}

Дайте мне знать, если это поможет или если что-то неясно.

Другие вопросы по тегам