static void BuildAsset(BuildTarget target) { string Path = GetPath(target); string outPath = "Assets/Patcher/ABs/" + Path; if (!Directory.Exists(outPath)) Directory.CreateDirectory(outPath); AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outPath, BuildAssetBundleOptions.None, target); if(null != manifest) { Patcher.PatcherElem elem = new Patcher.PatcherElem(); string[] abs = manifest.GetAllAssetBundles(); foreach(var ab in abs) { Patcher.PatcherElem.Elem e = new Patcher.PatcherElem.Elem(); e.szName = ab; e.mVersion = manifest.GetAssetBundleHash(ab).ToString(); e.mDepends = manifest.GetAllDependencies(ab); string filePath = outPath + "/" + ab; byte[] bs = File.ReadAllBytes(filePath); e.mLength = bs.Length; elem.AddElem(e); } string manifestPath = Application.dataPath + "/Patcher/ABs/" + Path; elem.Serialize(manifestPath + "/Pather.txt"); } AssetDatabase.Refresh(); }
public IEnumerator Donload() { mDownloadeds = null; mDownloads = null; string remotePath = mPath + "/Pather"; string localPath = Application.persistentDataPath + "/Pather";; WWW www = new WWW(remotePath); yield return(www); if (www.error == null) { mDownloads = Patcher.PatcherElem.DeSerialize(www.text); if (File.Exists(localPath)) { string szLocal = File.ReadAllText(localPath); mDownloadeds = Patcher.PatcherElem.DeSerialize(szLocal); } else { mDownloadeds = new Patcher.PatcherElem(); } List <Patcher.PatcherElem.Elem> rm = new List <Patcher.PatcherElem.Elem>(); mTotal = 0; foreach (var e in mDownloads.mElems) { if (mDownloadeds.IsChange(e)) { e.mDonload = new WWW(mPath + "/" + e.szName); mTotal += e.mLength; } else { rm.Add(e); } } foreach (var r in rm) { mDownloads.RemoveElem(r); } if (mDownloads.mElems.Count != 0) { mStatus = STATUS.DOWNLOADING; } else { mStatus = STATUS.NONE; if (null != mOnFinish) { mOnFinish(mDownloadeds); } } } else if (null != mOnError) { mOnError(www.error); mStatus = STATUS.ERROR; } }