Пример #1
0
    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();
    }
Пример #2
0
    /// <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));
    }