Ich benutze Ionic.Zip.dll, um eine ZIP-Datei aus der Einheit zu extrahieren.DotNetZIp blockierende Einheit
Es funktioniert gut mit zip.ExtractAll(zipPath, ExtractExistingFileAction.OverwriteSilently);
Aber während das Archiv der UI hängen (Schaltfläche Effekte, etc ...) extrahiert. Also habe ich versucht, das in einer Coroutine zu verwenden, aber habe kein Ergebnis, ich denke, es ist der falsche Weg.
Haben Sie schon etwas auf diese Weise extrahiert?
EDIT:
hatte ich Probleme Abschluss der Gewinde Funktion Verfolgung wegen Unity Einschränkungen. Endlich ist es mit einem Bool und einem Koroutine getan:
public bool extractionDone = false;
IEnumerator CheckLauncherExtracted() {
while(!extractionDone) yield return null;
Debug.Log("ExtractionDone done !");
OnLauncherFilesExtracted();
}
public void Extraction(){
StartCoroutine("CheckLauncherExtracted");
ThreadPool.QueueUserWorkItem(x => {
FileManager.ExtractZipToDirectory(zipPath, zipExtractPath);
extractionDone = true;
});
}
Danke, ist es möglich, einen Rückruf im Haupt-Thread am Ende der Extraktion auszulösen, um Einheit zu sagen, es kann seinen Prozess fortsetzen? – FLX
Problem gelöst, danke – FLX
Ich sehe, was Sie in Ihrer Bearbeitung getan haben. Du musst das nicht tun. Bitte lesen Sie meine Antwort erneut mit dem angegebenen Link. Nach 'zip.ExtractAll' hätten Sie' UnityThread.executeInUpdate() => { yourCallBackFunction() }); 'Das ist es. – Programmer