using System.Collections; using System.Collections.Generic; using System.IO; using ThirdParty.DownloadSystem; using UnityEngine; public class GameZip { private UnZipThreadPool _unZipThreadPool; private string md5Value; public GameStart GameStart; private System.Action callBack; private string streamingPath; private GameStartUIPanel _gameStartUIPanel; public void Start(GameStartUIPanel gameStartUIPanel,GameStart gameStart, System.Action callBack) { this.GameStart = gameStart; this.callBack = callBack; _gameStartUIPanel = gameStartUIPanel; streamingPath = Application.streamingAssetsPath; #if UNITY_IPHONE streamingPath = "file://"+streamingPath; #endif LoadMd5(); } private void LoadMd5() { string md5 = UnityEngine.PlayerPrefs.GetString("assetMD5", ""); Debug.Log(" Application.version" + Application.version); if (!md5.Equals(Application.version)) //需要解压文件 { Debug.Log(Application.persistentDataPath); GameStart.StartCoroutine(DowFile()); } else { Finish(); } } private IEnumerator DowFile() { _gameStartUIPanel.SetMassge("转移文件"); string url = streamingPath + "/assetBundle.zip"; string dowFinle = Application.persistentDataPath + "/assetBundle.zip"; AddLoad("转移解压文件"); DownloadFileData downloadFileData = new DownloadFileData(); downloadFileData.remoteUrl = url; downloadFileData.localPath = dowFinle; DownloadHander downloadHander = FileDownloadSystem.Instance.DownloadFile(downloadFileData); while (!downloadHander.isFinish) { yield return new WaitForSeconds(1); } if (!File.Exists(dowFinle)) { Finish(); yield break; } string unzipPath = Application.persistentDataPath + "/Bundle"; _unZipThreadPool = new UnZipThreadPool(); AddLoad("开始解压" + unzipPath); _gameStartUIPanel.SetMassge("开始解压,解压过程中不消耗流量"); _unZipThreadPool.InitUnZip(dowFinle, unzipPath); SliderData sliderData = new SliderData(); sliderData.maxValue = _unZipThreadPool.maxSize; sliderData.CcurrValue = delegate { return sliderData.maxValue - _unZipThreadPool.CurrCount(); }; _gameStartUIPanel.SetSlider(sliderData); while (!_unZipThreadPool.isEnd) { yield return new WaitForSeconds(1); } _gameStartUIPanel.ClearSlider(); _gameStartUIPanel.SetMassge("解压完成"); AddLoad("解压完成"); _unZipThreadPool.Cloas(); UnityEngine.PlayerPrefs.SetString("assetMD5", Application.version); Finish(); } private void Finish() { // LoadDll.StartDllLoad(); callBack?.Invoke(); } private void Update() { FileDownloadSystem.Instance.Update(); } public void AddLoad(string message) { } }