AssetBundle.CreateFromMemory中的收益率收益率

时间:2014-11-27 07:34:44

标签: unity3d unity3d-editor

正如文档所说,IEnumerator方法像线程一样执行,但我很困惑为什么

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

冻结我的游戏2秒钟。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

它会冻结2秒,因为这是您实际请求的 yield return assetBundleCreateRequest

  

异步操作协程。

     

您可以继续屈服,直到异步操作继续,或手动检查它是否已完成(isDone)或进度(进度)。 AsyncOperation

所以现在你要求你的协程等到你的assetbundlecreaterequest完成。

要手动检查功能是否完成,而不必冻结您的应用程序,将使用isdoneprogress命令

如果您需要进一步澄清,请随时发表评论。

修改

使用isdone的样本

AssetBundleCreateRequest acr = AssetBundle.CreateFromMemory(decryptedData);
while (!acr.isDone)
{
    yield;
}
AssetBundle bundle = acr.assetBundle;