2017-09-02 22 views
1

複数のassetbundleに対して1つのダウンロードプログレスバーを作成しようとしています。すべてのassetbundleの合計サイズは、webRequest.GetResponseHeader("Content-Length")を追加して計算されました。しかし、www.downloadProgressは0から1までの値しか返しません。複数のunity3d assetbundleを1つのプログレスバーにダウンロードしますか?

ここではサンプルコードです:

float progress = 0; 

for (int i = 0; i < assetToDownload.Count; i++) 
{ 
    UnityWebRequest www = UnityWebRequest.GetAssetBundle(assetToDownload[i], 0, 0); 
    www.Send(); 

    while (!www.isDone) 
    { 
     progress += www.downloadProgress * 100; 
     Debug.Log((progress/totalSize) * 100); 
     yield return null; 

    } 
} 

答えて

1

切り抜いた要求で、コンテンツサイズを取得することにより、一生懸命それを自分でしないでください。あなたは単調性から0-1の値を使用してそれらを一緒に加える必要があります。これはプログレスバーからそれを見たときに差異を生じさせることはなく、実装するには苦痛ではありません。 私はこれが役立つことを願っています。

//To calculate the percantage 
float maxProgress = assetToDownload.Count; 

for (int i = 0; i < assetToDownload.Count; i++) 
{ 
    UnityWebRequest www = UnityWebRequest.GetAssetBundle(assetToDownload[i], 0, 0); 
    www.Send(); 

    //To remember the last progress 
    float lastProgress = progress; 
    while (!www.isDone) 
    { 
     //Calculate the current progress 
     progress = lastProgress + www.downloadProgress; 
     //Get a percentage 
     float progressPercentage = (progress/maxProgress) * 100; 
    } 
} 
関連する問題