C# 如何获取UnityWebRequest.GetAssetBundle内容长度属性?

C# 如何获取UnityWebRequest.GetAssetBundle内容长度属性?,c#,unity3d,C#,Unity3d,我正在尝试获取从远程服务器下载的资产大小。我试图从http头获取内容大小,但我只能在该请求完成时访问它,否则我将从www.GetResponseHeaders()函数接收null。我尝试使用DownloadHandlerAssetBundle处理程序,但无法从中获取内容长度。若我编写扩展DownloadHandlerScript的自定义类,那个么我就可以重写这个方法 protected void ReceiveContentLength(long contentLength); 但我放松了下载

我正在尝试获取从远程服务器下载的资产大小。我试图从http头获取内容大小,但我只能在该请求完成时访问它,否则我将从www.GetResponseHeaders()函数接收null。我尝试使用DownloadHandlerAssetBundle处理程序,但无法从中获取内容长度。若我编写扩展DownloadHandlerScript的自定义类,那个么我就可以重写这个方法

protected void ReceiveContentLength(long contentLength);
但我放松了下载HandlerAssetBundle方法。这是我当前使用的代码:

    www = UnityWebRequest.GetAssetBundle(url);
    //DownloadHandlerAssetBundle handler = new DownloadHandlerAssetBundle(www.url, uint.MaxValue) ;

    //www.downloadHandler = handler;

    yield return www.Send();

    if (www.isError)
    {
        Debug.Log(www.error);
    }
    else
    {
        AssetBundle bundle = ((DownloadHandlerAssetBundle)www.downloadHandler).assetBundle;
        string[] scenePath = bundle.GetAllScenePaths();
        ...
    }
当我试图创建自定义downloadHandler时使用的这个页面

在更新中,这是我获取当前下载字节的方式:

 www.downloadedBytes

因此,问题是,如何获取总资产规模。

如果查看UnityWebRequest.GetAssetBundle的文档,它不会在标题中发送任何其他数据。这是一个特殊的请求,仅用于资产绑定,并且能够在数据完全下载之前提取数据

此方法创建UnityWebRequest,设置要获取的方法,并将目标URL设置为字符串uri参数。不设置其他标志或自定义标题

此方法将DownloadHandlerAssetBundle附加到 UnityWebRequest。此DownloadHandler有一个特殊的 DownloadHandlerAssetBundle.assetBundle属性,可用于 下载足够的数据后提取资产包,并 解码以允许访问捆绑包内的资源

您是否希望在用户开始下载之前通知下载进度或显示下载大小

对于下载进度,如果创建异步加载程序,则可以访问进度属性

如果通知用户,请尝试使用标准UnityWebRequest并检索具有内容长度的完整请求标头。然后在开始下载之前,用DownloadHandlerAssetBundle.assetBundle替换UnityWebRequest.downloadHandler?(这方面我不太确定,但我会试试看。)
也许可以致电标准UnityWebRequest获取内容长度,然后将此标准UnityWebRequest替换为GetAsset版本?

谢谢您的回复。我正在尝试获取资产大小,以表明您已下载了y mb中的x mb。我正试图通知下载进度。我可以访问ProgressFloat值,但我想显示下载资产的总大小。根据您的建议,我似乎必须提出两个请求,一个请求获取资产大小,另一个请求获取资产本身。Unity是否有只接收请求头数据而不下载文件本身的方法?我还认为,LoadAssetSync加载已经下载的资产,因此我在本地接收到加载资产的进度。我发现了如何仅获取头,使用以下内容:,因此我将请求头,而不是资产本身,再次感谢您的帮助。