Пример #1
0
 private Dictionary <string, ArtRes> CheckAssetBundleResources(List <string> dirList)
 {
     if (m_Loader == null || dirList == null || dirList.Count <= 0)
     {
         return(null);
     }
     try {
         Dictionary <string, ArtRes> ret = null;
         for (int i = 0; i < dirList.Count; ++i)
         {
             string dir = dirList[i];
             if (string.IsNullOrEmpty(dir))
             {
                 continue;
             }
             if (!Directory.Exists(dir))
             {
                 continue;
             }
             string[] files = Directory.GetFiles(dir, "*.*", SearchOption.TopDirectoryOnly);
             if (files == null || files.Length <= 0)
             {
                 continue;
             }
             for (int j = 0; j < files.Length; ++j)
             {
                 float  process  = ((float)j) / ((float)files.Length);
                 string fileName = files[j];
                 if (string.IsNullOrEmpty(fileName))
                 {
                     continue;
                 }
                 fileName = fileName.Replace('\\', '/').ToLower();
                 EditorUtility.DisplayProgressBar("正在检查资源", fileName, process);
                 string    parentAssetName = AssetBunbleInfo.GetBundleFileName(fileName, true, false);
                 AssetInfo parentInfo      = m_Loader.FindAssetInfo(parentAssetName);
                 if (parentInfo == null)
                 {
                     continue;
                 }
                 string   parentAssetBundleName = Path.GetFileName(parentInfo.FileName);
                 string[] depFileNames          = AssetDatabase.GetDependencies(fileName);
                 for (int k = 0; k < depFileNames.Length; ++k)
                 {
                     string depFileName = depFileNames[k];
                     if (string.IsNullOrEmpty(depFileName))
                     {
                         continue;
                     }
                     string    assetName = AssetBunbleInfo.GetBundleFileName(depFileName, true, false).ToLower();
                     AssetInfo assetInfo = m_Loader.FindAssetInfo(assetName);
                     if (assetInfo == null)
                     {
                         if (ret == null)
                         {
                             ret = new Dictionary <string, ArtRes>();
                         }
                         if (!ret.ContainsKey(depFileName))
                         {
                             ArtRes res = new ArtRes();
                             res.refCount = 1;
                             System.Type resType = AssetBundleBuild.GetResourceExtType(depFileName);
                             if (resType == null)
                             {
                                 continue;
                             }
                             res.resType        = resType;
                             res.includeBundles = new HashSet <string>();
                             res.includeBundles.Add(parentAssetBundleName);
                             ret.Add(depFileName, res);
                         }
                         else
                         {
                             ArtRes res = ret[depFileName];
                             res.refCount    += 1;
                             ret[depFileName] = res;
                             if (!res.includeBundles.Contains(parentAssetBundleName))
                             {
                                 res.includeBundles.Add(parentAssetBundleName);
                             }
                         }
                     }
                 }
             }
         }
         return(ret);
     } finally {
         EditorUtility.ClearProgressBar();
     }
 }