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

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

Patricia Arquette
リリース: 2025-01-05 00:21:38
オリジナル
305 人が閲覧しました

How to Retrieve a Value After a Unity Coroutine Completes?

Unity でのコルーチンの終了後にのみ値を返す

Unity でコルーチンを操作する場合、変数を更新する必要があることがよくあります。コルーチンが完了したらその値を返します。ただし、関数は本質的にコルーチンの終了を待ってから戻るわけではありません。

この問題を解決するには、アクション デリゲートを使用する方法があります。アクション デリゲートは、入力値を受け取り、それに対してアクションを実行する関数です。この場合、アクション デリゲートは、コルーチンの終了後に更新された値を受け取るコールバックとして使用できます。

更新されたコード:

public int POST(string username, string passw)
{
    WWWForm form = new WWWForm();
    form.AddField("usr", username);
    form.AddField("pass", passw);

    WWW www = new WWW(url, form);
    
    // Start the coroutine and pass in the callback
    StartCoroutine(WaitForRequest(www, (status) => {
        success_fail = status;
    }));

    // Function does not wait for coroutine to finish, so return a placeholder value
    return -1;
}

private IEnumerator WaitForRequest(WWW www, Action<int> callback)
{
    yield return www;
    if (www.error == null)
    {
        if(www.text.Contains("user exists"))
        {
            callback(2);
        }
        else
        {
            callback(1);
        }
    } else {
        callback(0);
    }    
}
ログイン後にコピー

POST メソッドでは、値を直接返す代わりに、コルーチンを開始し、アクション デリゲートをコールバックとして渡します。コルーチンが終了するとコールバックが実行され、success_fail 変数に適切な値が設定されます。

この解決策では false 値を返す問題は回避されますが、POST メソッドは依然として戻り値を返すことに注意することが重要です。関数の実行のブロックを避けるためのプレースホルダー値 (-1)。このプレースホルダー値を確認して適切に処理するかどうかは、POST メソッドのクライアント次第です。

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

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