0

だから私は私のクラスの3つの関数で3回繰り返される同様のコードを持っている私のsalfeを探します

var obj = ...
while (!obj.isDone) {
      yield return obj;
}

Unity3dでは、AssetBundleRequest、WWW、その他のasincクラスに関連しています。私がそのコードを呼び出したところから関数が返され、そのような呼び出しの後IEnumeratorに多く のことがあります。1つのログまたは次の場合にのみ終了する類似のものを使用して、関数から呼び出し可能なテンプレート関数にそのようなものをラップする方法を知りたいですか?yield returnswaitwaityeld return func<typeof(obj)>(obj)obj.isDone

4

1 に答える 1

1

一度だけできませんyield return obj;か?が定義されているAsyncOperationのドキュメントisDoneは、次のように言っているようです。

非同期操作が続くまで譲歩できます...

そうでない場合は、次のようなコードを作成できます。

public static IEnumerator UntilDone(AsyncOperation op)
{
  while (!op.isDone) {
    yield return op;
  }
}
//in a method:
yield return StartCoroutine(UntilDone(obj));
于 2012-08-11T03:27:58.867 に答える