Exemple #1
0
        //根据打包后的Manifest刷新XML
        public void RefreshXMLTableByManifest(AssetBundleManifest manifest)
        {
            HashSet <string> bundleHash = new HashSet <string>();

            foreach (var t in XMLTable.BundleInfos)
            {
                var defaultBundleName = t.GetBundleNameWithLangExtension(eAssetLanguageVarType.Default);
                var dependences       = manifest.GetAllDependencies(defaultBundleName);
                t.dependenceBundleName = new string[dependences.Length];
                for (int i = 0; i < dependences.Length; i++)
                {
                    t.dependenceBundleName[i] = AssetI8NHelper.GetBundleNameWithOutLangStr(dependences[i]);
                }
                var hash = manifest.GetAssetBundleHash(defaultBundleName);
                if (bundleHash.Contains(hash.ToString()))
                {
                    //fileHash重名的,打印出来,并且使用bundleName来合并,避免冲突
                    t.bundleFileName = defaultBundleName + "_" + hash.ToString();
                    CommonLog.Error(string.Format("卧槽,有bundleFileHash冲突,bundle信息为,bundleName:{0},bundleHash:{1},asset:{2}"
                                                  , defaultBundleName, hash.ToString(), t.assets[0].resPath));
                }
                else
                {
                    bundleHash.Add(defaultBundleName);
                    t.bundleFileName = defaultBundleName;
                }
            }
        }