"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como implementar atrasos na unidade para o sequenciamento de jogabilidade e eventos?

Como implementar atrasos na unidade para o sequenciamento de jogabilidade e eventos?

Postado em 2025-02-06
Navegar:422

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

explicação detalhada da implementação de atraso da unidade

]

A criação de atrasos na unidade é essencial para gerenciar fluxos de jogos, classificar eventos e simular o comportamento do mundo real. Aqui estão algumas maneiras de alcançar o atraso:

1. startCoroutine

: Declare uma função coroutine.
  • waitforseconds : pausa a execução por um tempo especificado (afetado pela velocidade do jogo).
  • waitforsecondsRealTime : pausa a execução por um tempo especificado (não afetado pela velocidade do jogo).
  • Exemplo:
{ // gira 90 graus transform.rotate (vetor3.right * 90); // Aguarde 4 segundos (não afetado pela velocidade do jogo) Retorno de rendimento New WaitForSecondsRealTime (4); // gira 40 graus transform.rotate (vetor3.right * 40); // Aguarde 2 segundos (afetado pela velocidade do jogo) Retorno de rendimento novo waitforssegunds (2); // gira 20 graus 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);
}
ou

para loop de

: aumente gradualmente o cronômetro até que o valor desejado seja atingido.
  • rendimento retornar null : Pausar a execução de um quadro.
  • Exemplo: ienumerator timebasedloopexample () { // gira 90 graus transform.rotate (vetor3.right * 90); // Aguarde 4 segundos (afetado pela velocidade do jogo) Timer de flutuação = 0; While (timer

3.

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

    // 等待4秒(受游戏速度影响)
    float timer = 0;
    while (timer 
: A execução não é suspensa até que a condição seja verdadeira.

esperawhile : Pausar a execução quando a condição é verdadeira.

  • Exemplo: ienumerator waituntilexample () { // Aguarde a pontuação do jogador atingir 100 Retorno de rendimento novo waituntil (() => playerscore> = 100); // Carregar o próximo nível SceNemanager.loadscene ("NextLevel"); }
  • 4.
Invoke

: agende uma função a ser executada após um atraso especificado.

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

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

Invoke , mas a função é chamada repetidamente em intervalos de tempo especificados.

Exemplo:
  • Invoke ("FeedDog", 5); Invokerepeating ("MovePlayer", 0,5F, 0,2F); ]
  • 5.
  • time.deltatime : usado para medir o tempo entre os Frames.
  • Variável do timer
: incremento cada quadro até que o valor desejado seja atingido.

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

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

Exemplo:

void update () { Timer = time.deltatime; if (timer> = 5) { // execute o código após 5 segundos Timer = 0; Feeddog (); } }
  • Resolva seu problema:
  • Para criar um atraso ao exibir o texto em seu script, você pode usar o seguinte código:
  • ienumerator showtextwithdelay () { Textui.text = "Bem -vindo ao assistente digital!"; Retorno de rendimento novo WaitForSegunds (3F); Textui.text = ("O número mais alto que você pode escolher é" max); Retorno de rendimento novo WaitForSegunds (3F); Textui.text = ("O número mais baixo que você pode escolher é" min); } StartCoroutine (showTextWithDelay ());
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3