"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo implementar demoras en la unidad para la secuencia de juegos y eventos?

¿Cómo implementar demoras en la unidad para la secuencia de juegos y eventos?

Publicado el 2025-02-06
Navegar:356

How to Implement Delays in Unity for Gameplay and Event Sequencing?

Explicación detallada de la implementación del retraso de Unity

]]

Crear retrasos en la unidad es esencial para administrar los flujos de juegos, clasificar eventos y simular el comportamiento del mundo real. Aquí hay algunas formas de lograr el retraso:

1. startCoroutine

: declarar una función de Coroutine.
  • waitforseconds : pausa la ejecución por un tiempo especificado (afectado por la velocidad del juego).
  • WaitforSecondSrealTime : pausa la ejecución por un tiempo especificado (no afectado por la velocidad del juego).
  • Ejemplo:
IEnumerator WaitforSecondsexample () { // girar 90 grados transform.rotate (vector3.right * 90); // espera 4 segundos (no afectado por la velocidad del juego) rendimiento devuelve nuevo WaitForSecondSrealTime (4); // girar 40 grados transform.rotate (vector3.right * 40); // espera 2 segundos (afectado por la velocidad del juego) rendimiento de devolución de nuevos WaitForSeconds (2); // girar 20 grados transform.rotate (vector3.right * 20); }

2.
IEnumerator WaitForSecondsExample()
{
    // 旋转90度
    transform.Rotate(Vector3.right * 90);

    // 等待4秒(不受游戏速度影响)
    yield return new WaitForSecondsRealtime(4);

    // 旋转40度
    transform.Rotate(Vector3.right * 40);

    // 等待2秒(受游戏速度影响)
    yield return new WaitForSeconds(2);

    // 旋转20度
    transform.Rotate(Vector3.right * 20);
}
o

para bucle de

: aumente gradualmente el temporizador hasta que se alcance el valor deseado.
  • rendimiento de return null : pausa ejecución de un marco.
  • Ejemplo: IEnumerator TimeBasedloopExample () { // girar 90 grados transform.rotate (vector3.right * 90); // espera 4 segundos (afectado por la velocidad del juego) Temporizador de flotación = 0; Mientras (temporizador

3.

IEnumerator TimeBasedLoopExample()
{
    // 旋转90度
    transform.Rotate(Vector3.right * 90);

    // 等待4秒(受游戏速度影响)
    float timer = 0;
    while (timer 
: la ejecución no se suspende hasta que la condición sea verdadera.

Waitwhile : pausa Ejecución cuando la condición es verdadera.

  • Ejemplo: IEnumerator WaitUtilexample () { // espera a que el puntaje del jugador alcance los 100 rendimiento return nuevo waituntil (() => jugadorescore> = 100); // Cargue el siguiente nivel Scenerager.Loadscene ("NextLevel"); }
  • 4.
Invoke

: Programe una función para ejecutar después de un retraso especificado.

IEnumerator WaitUntilExample()
{
    // 等待玩家分数达到100
    yield return new WaitUntil(() => playerScore >= 100);

    // 加载下一关
    SceneManager.LoadScene("NextLevel");
}
: similar a

Invoke , pero la función se llama repetidamente a intervalos de tiempo especificados.

Ejemplo:
  • Invoke ("Feeddog", 5); InvokePeating ("MovePlayer", 0.5f, 0.2f); ]
  • 5.
  • time.deltatime : se usa para medir el tiempo entre los marcos.
  • Variable de temporizador
: incrementa cada cuadro hasta que se alcance el valor deseado.

if
Invoke("FeedDog", 5); // 5秒后调用FeedDog()

InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。

Ejemplo:

void Update () { temporizador = time.deltatime; if (temporizador> = 5) { // ejecutar el código después de 5 segundos temporizador = 0; FEEDDOG (); } }
  • Resuelve tu problema:
  • Para crear un retraso al mostrar texto en su script, puede usar el siguiente código:
  • IEnumerator showTextWithDelay () { Textui.Text = "¡Bienvenido al asistente digital!"; rendimiento de devolución de nuevos WaitForSeconds (3F); TextUi.Text = ("El número más alto que puede elegir es" max); rendimiento de devolución de nuevos WaitForSeconds (3F); TextUi.Text = ("El número más bajo que puede elegir es" min); } StartCoroutine (showTextWithDelay ());
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3