ホームページ > バックエンド開発 > C++ > 単にスクリプトを団結して待っている/眠る方法は?

単にスクリプトを団結して待っている/眠る方法は?

DDD
リリース: 2025-01-31 13:11:09
オリジナル
942 人が閲覧しました

How to Simply Make a Script Wait/Sleep in Unity?

unityスクリプトが待機/いくつかの方法の停止

Unityは、この記事を待機または一時停止するさまざまな方法を提供します

1。補正と

を使用します これは最も単純で直接的な方法です。 Coroutine関数で待つ必要があるコードを配置し、指定された待機時間を使用します。 覚えておいてください、コルーチン関数はWaitForSecondsで開始する必要があります。

2。補正とWaitForSeconds StartCoroutine(yourFunction)

を使用します
private void Start()
{
    StartCoroutine(Waiter());
}

private IEnumerator Waiter()
{
    // 旋转 90 度
    transform.Rotate(new Vector3(90, 0, 0), Space.World);

    // 等待 4 秒
    yield return new WaitForSeconds(4);

    // 旋转 40 度
    transform.Rotate(new Vector3(40, 0, 0), Space.World);

    // 等待 2 秒
    yield return new WaitForSeconds(2);

    // 旋转 20 度
    transform.Rotate(new Vector3(20, 0, 0), Space.World);
}
ログイン後にコピー
<<>と

の違いは、が停止されていても、WaitForSecondsRealtimeが影響を受けないことです。

<。 WaitForSecondsRealtimeこの方法は、タイマーなどの待ち時間を表示する必要があるシーンに適しています。 また、待機プロセス中に割り込み操作を許可します。 WaitForSeconds Time.timeScale WaitForSecondsRealtimeシンプルなバージョン、タイマーを独立したコルーチンに分離してください:

private void Start()
{
    StartCoroutine(WaiterRealtime());
}

private IEnumerator WaiterRealtime()
{
    // 旋转 90 度
    transform.Rotate(new Vector3(90, 0, 0), Space.World);

    // 等待 4 秒 (不受 Time.timeScale 影响)
    yield return new WaitForSecondsRealtime(4);

    // 旋转 40 度
    transform.Rotate(new Vector3(40, 0, 0), Space.World);

    // 等待 2 秒 (不受 Time.timeScale 影响)
    yield return new WaitForSecondsRealtime(2);

    // 旋转 20 度
    transform.Rotate(new Vector3(20, 0, 0), Space.World);
}
ログイン後にコピー

<。 特定の条件が満たされるのを待っています。たとえば、次のレベルをロードする前に、プレイヤースコアが100ポイントに達するのを待ちます。 Time.deltaTime

<。

特定の条件を待つことは満たされていません。たとえば、プレイヤーがESCキーを押してゲームを終了するのを待ちます。

private bool quit = false;

private void Start()
{
    StartCoroutine(WaiterWithTimer());
}

private IEnumerator WaiterWithTimer()
{
    float counter = 0;
    float waitTime = 4;
    while (counter < waitTime)
    {
        counter += Time.deltaTime;
        Debug.Log("已等待时间:" + counter + " 秒");
        if (quit) yield break;
        yield return null;
    }
    // ... 剩余代码 ...
}
ログイン後にコピー

<

呼び出し機能を遅延します。
private bool quit = false;

// ... (WaiterWithTimer 函数) ...

private IEnumerator WaitTimer(float waitTime)
{
    float counter = 0;
    while (counter < waitTime)
    {
        counter += Time.deltaTime;
        Debug.Log("已等待时间:" + counter + " 秒");
        if (quit) yield break;
        yield return null;
    }
}
ログイン後にコピー

WaitUntil同様の方法3ですが、コルーチンを使用しないでください。 これは頻繁に呼び出し、効率が低く、長期待機には推奨されません。 選択する方法は、特定のアプリケーションシナリオに依存します。 単純なレイテンシの場合、または

で十分です。 長い間

で待つのは避けてください。

以上が単にスクリプトを団結して待っている/眠る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート