es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando retrasos asincrónicos en Godot con C#

Actualmente estoy experimentando con Godot C# haciendo un shooter básico y para la frecuencia de fuego del arma he estado probando diferentes sistemas de retardo. Los Temporizadores del Nodo funcionan, aunque estoy tratando de hacer el script genérico, y las llamadas del Temporizador parecen solo llamar funciones en el script padre.

Ahora estoy viendo el método Task.Delay de C# y también parece funcionar, siendo una acción asíncrona, no parece verse afectada por la frecuencia de cuadros ni ralentiza el juego.

Mi pregunta es si hay algún problema conocido al usar Task.Delay en aplicaciones de juegos: como si es poco confiable o puede crashear si se llaman demasiadas instancias del método.

Aquí debajo está el código, aunque no creo que sea importante:

 private void shoot() {
  // si "canShoot", generar bala
  ShootCooledDown();
}

private async void ShootCooledDown() {
  TimeSpan span = TimeSpan.FromSeconds((double)(new decimal(shotDelay)));
  canShoot = false;
  await Task.Delay(span);
  canShoot = true;
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    De mi investigación, parece que el uso de Task.Delay en aplicaciones de juegos generalmente es confiable y no debería causar ningún bloqueo. Sin embargo, es importante tener en cuenta que el método Task.Delay es asíncrono, por lo que puede no ser adecuado para ciertas aplicaciones. Además, es importante asegurarse de que el retraso no sea demasiado largo, ya que esto podría hacer que el juego se vuelva irresponsivo.

Comments are closed.