Esempio n. 1
0
 private static int Compare(AssetBundleBuildInfo a, AssetBundleBuildInfo b)
 {
     if (a.searchDirectory.Length != b.searchDirectory.Length)
     {
         return(b.searchDirectory.Length - a.searchDirectory.Length);
     }
     return((int)a.packingType - (int)b.packingType);
 }
Esempio n. 2
0
        private static void BuildConfigABFile(AssetBundleBuildInfo buildInfo)
        {
            string        bundleName = "";
            List <string> dirs       = new List <string>();
            List <string> files      = new List <string>();

            switch (buildInfo.packingType)
            {
            case AssetBundlePackingType.Whole:
                files.Clear();
                PathTools.GetAllFiles(PathTools.UnityAssetPathToPath(buildInfo.searchDirectory), files, null, "*.*", SearchOption.AllDirectories, new List <string> {
                    ".meta"
                });
                bundleName = buildInfo.searchDirectory + "_" + buildInfo.packingType.ToString() + "_" + buildInfo.bundleNameExt;
                for (int i = 0; i < files.Count; i++)
                {
                    AddConfigFileABFile(files[i], bundleName);
                }
                break;

            case AssetBundlePackingType.SubDir:
                dirs.Clear();
                PathTools.GetDirectories(PathTools.UnityAssetPathToPath(buildInfo.searchDirectory), dirs, "*", SearchOption.TopDirectoryOnly);
                for (int i = 0; i < dirs.Count; i++)
                {
                    bundleName = PathTools.PathToUnityAssetPath(dirs[i]) + "_" + buildInfo.packingType.ToString() + "_" + buildInfo.bundleNameExt;
                    files.Clear();
                    PathTools.GetAllFiles(dirs[i], files, null, "*.*", SearchOption.AllDirectories, new List <string> {
                        ".meta"
                    });
                    for (int j = 0; j < files.Count; j++)
                    {
                        AddConfigFileABFile(files[j], bundleName);
                    }
                }
                break;

            case AssetBundlePackingType.SingleFile:
                files.Clear();
                PathTools.GetAllFiles(PathTools.UnityAssetPathToPath(buildInfo.searchDirectory), files, null, "*.*", SearchOption.AllDirectories, new List <string> {
                    ".meta"
                });
                for (int i = 0; i < files.Count; i++)
                {
                    string curFile        = PathTools.PathToUnityAssetPath(files[i]);
                    string pathWithoutExt = PathTools.GetFilePathWithoutExt(curFile);
                    bundleName = pathWithoutExt + "_" + buildInfo.packingType.ToString() + "_" + buildInfo.bundleNameExt;
                    AddConfigFileABFile(files[i], bundleName);
                }
                break;
            }
        }
Esempio n. 3
0
        public static void Init()
        {
            lstBuildInfo.Clear();
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(CONFIG_PATH);
            foreach (XmlNode assetElement in xmlDoc.DocumentElement.ChildNodes)
            {
                if (assetElement.Name == "Build")
                {
                    AssetBundleBuildInfo info = new AssetBundleBuildInfo(assetElement as XmlElement);
                    lstBuildInfo.Add(info);
                }
            }
            //按照字符串的长度与是否整个文件夹打包排序(字符串越长的排在前面,如果whole打包,排在前面)
            lstBuildInfo.Sort(Compare);
        }
Esempio n. 4
0
 private static int Compare(AssetBundleBuildInfo a, AssetBundleBuildInfo b)
 {
     //所有排除目录的都放在最后排序
     if ((int)a.packingType != (int)b.packingType)
     {
         if (a.packingType == AssetBundlePackingType.Exclude)
         {
             return(1);
         }
         else if (b.packingType == AssetBundlePackingType.Exclude)
         {
             return(-1);
         }
     }
     if (a.searchDirectory.Length != b.searchDirectory.Length)
     {
         return(b.searchDirectory.Length - a.searchDirectory.Length);
     }
     return((int)a.packingType - (int)b.packingType);
 }