public static List <AssetBundleBuild> CollectABBuilds(UabConfigGroup cfggrp) { if (cfggrp.uabcount > 0) { return(collectABBuilds_Group(cfggrp)); } else { return(collectABBuilds_Single(cfggrp)); } }
public static string[] collectFiles(UabConfigGroup group) { List <string> allfiles = new List <string>(); string[] arrpath = group.realassetpath.Split(','); foreach (var realpath in arrpath) { if (!Directory.Exists(realpath)) { continue; } SearchOption op = group.onlytop ? SearchOption.TopDirectoryOnly : SearchOption.AllDirectories; //var files = Directory.GetFiles(realpath, "*.*", op).ToList(); //files = (from f in files // where // (File.GetAttributes(f) & FileAttributes.Hidden) != FileAttributes.Hidden && // Path.GetExtension(f) != ".meta" // select f.Replace('\\', '/')).ToList(); //if (!string.IsNullOrEmpty(group.extensions)) //{ // string[] splits = group.extensions.Split(','); // files = files.Where(f => splits.Contains(Path.GetExtension(f))).ToList(); //} //allfiles.AddRange(files); string[] wantpath = collectDirPath(realpath, group.dirsearchlayer); if (wantpath == null) { continue; } for (int i = 0; i < wantpath.Length; i++) { var files = Directory.GetFiles(wantpath[i], "*.*", op).ToList(); files = (from f in files where (File.GetAttributes(f) & FileAttributes.Hidden) != FileAttributes.Hidden && Path.GetExtension(f) != ".meta" select f.Replace('\\', '/')).ToList(); if (!string.IsNullOrEmpty(group.extensions)) { string[] splits = group.extensions.Split(','); files = files.Where(f => splits.Contains(Path.GetExtension(f))).ToList(); } allfiles.AddRange(files); } } return(allfiles.ToArray()); }
private static List <AssetBundleBuild> collectABBuilds_Single(UabConfigGroup cfggrp) { List <AssetBundleBuild> abbuilds = new List <AssetBundleBuild>(); string[] files = collectFiles(cfggrp); for (int i = 0; i < files.Length; i++) { string filename = Path.GetFileNameWithoutExtension(files[i]); AssetBundleBuild abbuild = new AssetBundleBuild(); abbuild.assetBundleName = string.Format("{0}_{1}", cfggrp.name, filename);//, UabDef.UAB_EXT); abbuild.assetNames = new string[] { files[i] }; //AssetImporter.GetAtPath(files[i]).assetBundleName = abbuild.assetBundleName; abbuilds.Add(abbuild); } return(abbuilds); }
private static List <AssetBundleBuild> collectABBuilds_Group(UabConfigGroup cfggrp) { Dictionary <int, List <string> > map = new Dictionary <int, List <string> >(); string[] files = collectFiles(cfggrp); for (int i = 0; i < files.Length; i++) { if (cfggrp.resourceasset) { if (!UabBuild.neededRes.Contains(files[i])) { continue; } } string loadpath = getAssetLoadPath(files[i], cfggrp.loadpath); int hash = UabHash.BkdrHash(loadpath.ToLower()); int abidx = hash % cfggrp.uabcount; List <string> l; if (!map.TryGetValue(abidx, out l)) { l = new List <string>(); map[abidx] = l; } l.Add(files[i]); } List <AssetBundleBuild> abbuilds = new List <AssetBundleBuild>(); foreach (var kvp in map) { AssetBundleBuild abbuild = new AssetBundleBuild(); abbuild.assetBundleName = getSplitBundleName(cfggrp.name, kvp.Key); abbuild.assetNames = kvp.Value.ToArray(); for (int i = 0; i < abbuild.assetNames.Length; i++) { //AssetImporter.GetAtPath(abbuild.assetNames[i]).assetBundleName = abbuild.assetBundleName; } abbuilds.Add(abbuild); } return(abbuilds); }