Как обновить несколько экземпляров класса, которые появляются на протяжении всей игры?
Новичок здесь, я создаю клон 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();
}
}
Дайте мне знать, если это поможет или если что-то неясно.