显示UnityWebRequest的进度

时间:2018-02-18 07:52:21

标签: c# unity3d webrequest

我正在尝试使用Unity Web Request下载assetbundle并显示进度,根据the documentation我需要捕获一个WebRequestAsyncOperation对象来查找进度但我找不到它

我尝试过使用AsyncOperation和UnityWebRequestAsyncOperation,我的例程兼容两者,使用其中一个有什么不同?

这是我的代码:

IEnumerator DownloadModel3D()
    {
        using (UnityWebRequest uwr = UnityWebRequest.GetAssetBundle(bundleURL,1,0))
        {
            //UnityWebRequestAsyncOperation request = uwr.SendWebRequest();
            AsyncOperation request = uwr.SendWebRequest();

            while (!request.isDone)
            {
                Debug.Log(request.progress);
                yield return null;
            }


            if (uwr.isNetworkError || uwr.isHttpError)
            {
                Debug.Log(uwr.error);
            }
            else
            {
                // Get downloaded asset bundle
                AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(uwr);

                assetBundleInstance = Instantiate(bundle.LoadAsset(assetName)) as GameObject;
                assetBundleInstance.transform.position = transform.position;
                assetBundleInstance.transform.localScale = new Vector3(.08f, .08f, .08f);
                assetBundleInstance.transform.SetParent(transform);
                contador.text = "Descargado: " + assetName + "\n" + bundleURL;
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

  

我需要捕获一个WebRequestAsyncOperation对象来查找进度但我找不到它

如果您的意思是 WebRequestAsyncOperation UnityWebRequestAsyncOperation 不同,那么结果就是这样。

<强> UnityWebRequestAsyncOperation

“从 UnityWebRequest 返回的异步操作对象.SendWebRequest()。”

您正在使用的方法是什么。

来源:https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequestAsyncOperation.html

  

我尝试过使用AsyncOperation和UnityWebRequestAsyncOperation,我的例程兼容两者,使用其中一个有什么不同?

UnityWebRequestAsyncOperation继承自AsyncOperation,这意味着它们共享相同的字段,也可能是相同的方法。 UnityWebRequestAsyncOperation另外还有以下字段:

webRequest返回创建操作的关联UnityWebRequest。

如果这没有回答你的问题,请详细说明。