2017-09-02 2 views
1

Ich versuche, einen einzigen Download Fortschrittsbalken für mehrere Assetbundle zu machen. Die Gesamtgröße aller Assetbundle wurde berechnet, indem webRequest.GetResponseHeader("Content-Length") hinzugefügt wurde. Aber die www.downloadProgress gibt nur einen Wert von 0 bis 1 zurück.Mehrere Unity3D Assetbundle Download in einem einzigen Fortschrittsbalken?

Hier ist der Beispielcode:

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; 

    } 
} 

Antwort

1

es nicht so schwer machen Sie sich durch den Inhalt-Größe mit einem diffrent Anfrage bekommen. Sie müssen nur die 0-1-Werte von der Einheit verwenden und sie zusammenfügen. Dies wird keinen Unterschied machen, wenn man es von einer Fortschrittsleiste aus betrachtet und es ist nicht so ein Schmerz in der a ** zu implementieren. Ich hoffe, das hilft.

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