ホームページ > バックエンド開発 > C++ > Unity コルーチンの完了後に値を返すにはどうすればよいですか?

Unity コルーチンの完了後に値を返すにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-03 14:09:43
オリジナル
786 人が閲覧しました

How Can I Return Values from Unity Coroutines After They Complete?

Unity コルーチン: 完了後に値を返す

Unity では、コルーチンは非同期タスクによく使用されます。ただし、終了後に値を返そうとすると問題が発生します。次のシナリオを考えてみましょう:

問題: スクリプトはコルーチンを使用して POST リクエストを開始しますが、リクエストの完了時に値を返す必要があります。ただし、コルーチンが終了する前に "return" ステートメントが実行されるため、値が正しくなくなります。

解決策: アクション デリゲートを介したコールバック

1。アクション デリゲートを作成します:

public delegate void RequestStatusCallback(int status);
ログイン後にコピー

2.コールバックを使用してリクエストを開始します:

スクリプトの Start() または Update() メソッドで、コルーチンを開始し、コールバックを提供します:

WWW www = new WWW("http://google.com");

StartCoroutine(WaitForRequest(www, (status) => {
    print(status.ToString());
}));
ログイン後にコピー

3. WaitForSeconds コルーチンを実装します:

private IEnumerator WaitForRequest(WWW www, RequestStatusCallback callback) {
    int tempInt = 0;
    yield return www;
    if (string.IsNullOrEmpty(www.error)) {
        if(!string.IsNullOrEmpty(www.text)) {
            tempInt = 3;
        }
        else {
            tempInt=2;
        }
    } else {
        print(www.error);
        tempInt=1;
    }
    callback(tempInt);
}
ログイン後にコピー

4.コールバックを使用して値を更新します:

コールバックはステータス値へのアクセスを提供し、変数を更新したり、リクエストの結果に基づいてその他の後続のアクションを実行したりできるようにします。

以上がUnity コルーチンの完了後に値を返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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