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 サイトの他の関連記事を参照してください。