2017-09-02 3 views
1

J'essaie de faire une barre de progression de téléchargement unique pour plusieurs assetbundle. La taille totale de tout l'assetbundle a été calculée en ajoutant son webRequest.GetResponseHeader("Content-Length"). Mais le www.downloadProgress renvoie une valeur de 0 à 1 uniquement.Téléchargement multiple unit3d assetbundle dans une seule barre de progression?

est ici l'exemple de code:

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; 

    } 
} 

Répondre

1

Ne faites pas vous-même si dur en obtenant la taille du contenu d'une demande diffrent. Vous avez juste besoin d'utiliser les valeurs 0-1 de l'unité et les ajouter ensemble. Cela ne fera pas de différence lors de la visualisation à partir d'une barre de progression et n'est pas si difficile à mettre en œuvre. J'espère que cela aide.

//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; 
    } 
}