0

ドキュメントによるとIEnumerator、メソッドはスレッドのように実行されますが、その理由がわかりません

AssetBundleCreateRequest assetBundleCreateRequest = AssetBundle.CreateFromMemory(ByteArray);
yield return assetBundleCreateRequest;

ゲームが 2 秒間フリーズします。誰でも説明できますか?

4

1 に答える 1

0

2 秒間フリーズします。これは、yield return assetBundleCreateRequestで実際に要求しているためです。

非同期操作のコルーチン。

非同期操作が続行されるまで譲歩するか、完了 (isDone) か進行 (progress) かを手動で確認できます。AsyncOperation

したがって、現在、assetbundlecreaterequest が完了するまでコルーチンに待機するように要求しています。

アプリケーションをフリーズせずに関数が完了したかどうかを手動で確認するには、代わりにisdoneまたはprogressコマンドを使用します

さらに明確にする必要がある場合は、お気軽にコメントしてください。

編集

isdoneの使用例

AssetBundleCreateRequest acr = AssetBundle.CreateFromMemory(decryptedData);
while (!acr.isDone)
{
    yield;
}
AssetBundle bundle = acr.assetBundle;
 
于 2014-11-27T09:14:48.257 に答える