IEnumerator YieldDownload(string _localPath, string _versionNum) { Events.msInst.DispatchEvent(VersionEvent.DOWNLOAD_FILE_SIZE, breakpointDownload.GetMaxFileLength()); while (true) { yield return(new WaitForSeconds(0.5f)); float tempProgress = breakpointDownload.Progress; Events.msInst.DispatchEvent(VersionEvent.DOWNLOAD_UPDATE, tempProgress); if (tempProgress >= 1) { breakpointDownload.Close(); // 从服务器下载的资源都是打包的文件,需要执行解压操作 yield return(UtilityUnpack.UnpackFolder(_localPath, Application.persistentDataPath + "/" + VersionConst.UnpackFolder + "/", true)); System.IO.File.WriteAllText(LuaFramework.Util.BasePath + VersionConst.VersionNumberFile, _versionNum); Events.msInst.DispatchEvent(VersionEvent.DOWNLOAD_NUMBER, new int[] { downloadFileList.Count, maxDownloadNum }); break; } } yield return(new WaitForSeconds(0.5f)); System.IO.File.WriteAllText(VersionConst.OutVersionNumberFile, _versionNum); DownloadAssets(); }
/// <summary> /// 解压初始文件 /// </summary> IEnumerator LoadVersionAssets() { if (!File.Exists(VersionConst.UnpackMarkPath)) { Directory.CreateDirectory(VersionConst.InUnpackDirectory); #if UNITY_IPHONE yield return(LoadDirectory(VersionConst.AppContentPath(), VersionConst.InUnpackDirectory + "/")); #else // UPK文件拷贝到相对路径 yield return(LoadFile(VersionConst.InUnpackFile, VersionConst.OutUnpackFile)); // 解压相对路径的UPK文件 yield return(UtilityUnpack.UnpackFolder(VersionConst.OutUnpackFile, VersionConst.InUnpackDirectory + "/")); #endif } // 解压文件成功,写入标示文件 // 防止UPK文件解压到一半,用户就退出游戏,导致文件解压不完整出现异常 File.WriteAllText(VersionConst.UnpackMarkPath, "2000"); // 资源解压完毕,开始加载本地的版本号 versionLib.SetVersionNumber(GetVersionNumber()); StartCoroutine(LoadWWW(NetworkPath + VersionConst.VersionFile + "?version=" + "&v=" + Random.Range(0f, 99999999f), OnVersionFileText_Callback)); }