Unity5 assetBundle 更新之-生成所有assetbundle的版本信息

来源:互联网 发布:homebrew mysql 启动 编辑:程序博客网 时间:2024/04/28 11:13

为了确定,哪些assetbundle需要从服务器下载,哪些不需要,在打包完成之后,生成一份txt 文件,保存所有assetbundle的名称和hashcode,只要发现客户端当前版本的hashcode和服务器的不一致,则说明需要下载,当然没有的更需要下载,然后用服务器的txt 文件覆盖客户端的即可。

具体代码如下

其中

Application.dataPath + "/../Assetbundle/Assetbundle" 是总的文件夹的assetbundle,包含了所有assetbbundle的信息,从这个manifest文件中获取所有assetbundle的名称及hashcode。
  [MenuItem("BuildAssetbundle/createFileHasCode")]    static void createHasTable()    {         string[] directoryEntries;         AssetBundle manifestBundle = AssetBundle.CreateFromFile(Application.dataPath                                                                  + "/../Assetbundle/Assetbundle");         if (manifestBundle != null)         {             AssetBundleManifest manifest = (AssetBundleManifest)manifestBundle.LoadAsset("AssetBundleManifest");             string[] allbundle = manifest.GetAllAssetBundles();             string fileinfo = "";             foreach(string assetname in allbundle)             {                 Hash128 has = manifest.GetAssetBundleHash(assetname);                 fileinfo += assetname + "," + has.ToString() + "\n";                // Debug.Log(has.GetHashCode().ToString());             }             FileStream fs = new FileStream(Application.dataPath + "/../Assetbundle/assetBundleVersion.txt", FileMode.Create);             StreamWriter sw = new StreamWriter(fs);             //开始写入             sw.Write(fileinfo);             //清空缓冲区             sw.Flush();             //关闭流             sw.Close();             fs.Close();         }                   }

0 0
原创粉丝点击