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();
 }
Beispiel #2
0
    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;
        }
    }