private AssetBundleBuild[] GetBuildMap() { m_AssetBundleDatas.Clear(); AssetBundle[] assetBundles = m_AssetBundleCollection.GetAssetBundles(); foreach (AssetBundle assetBundle in assetBundles) { m_AssetBundleDatas.Add(assetBundle.FullName.ToLower(), new AssetBundleData(assetBundle.Name.ToLower(), (assetBundle.Variant != null ? assetBundle.Variant.ToLower() : null), assetBundle.LoadType, assetBundle.Optional, assetBundle.GroupTag)); } Asset[] assets = m_AssetBundleCollection.GetAssets(); foreach (Asset asset in assets) { string assetName = asset.Name; if (string.IsNullOrEmpty(assetName)) { m_BuildReport.LogError("Can not find asset by guid '{0}'.", asset.Guid); return(null); } string assetFileFullName = Icarus.GameFramework.Utility.Path.GetCombinePath(Application.dataPath, assetName.Substring(AssetsSubstringLength)); if (!File.Exists(assetFileFullName)) { m_BuildReport.LogError("Can not find asset '{0}'.", assetFileFullName); return(null); } byte[] assetBytes = File.ReadAllBytes(assetFileFullName); int assetHashCode = Icarus.GameFramework.Utility.Converter.GetInt32(Icarus.GameFramework.Utility.Verifier.GetCrc32(assetBytes)); List <string> dependencyAssetNames = new List <string>(); DependencyData dependencyData = m_AssetBundleAnalyzerController.GetDependencyData(assetName); Asset[] dependencyAssets = dependencyData.GetDependencyAssets(); foreach (Asset dependencyAsset in dependencyAssets) { dependencyAssetNames.Add(dependencyAsset.Name); } if (RecordScatteredDependencyAssetsSelected) { dependencyAssetNames.AddRange(dependencyData.GetScatteredDependencyAssetNames()); } dependencyAssetNames.Sort(); m_AssetBundleDatas[asset.AssetBundle.FullName.ToLower()].AddAssetData(asset.Guid, assetName, assetBytes.Length, assetHashCode, dependencyAssetNames.ToArray()); } foreach (AssetBundleData assetBundleData in m_AssetBundleDatas.Values) { if (assetBundleData.AssetCount <= 0) { m_BuildReport.LogError("AssetBundle '{0}' has no asset.", GetAssetBundleFullName(assetBundleData.Name, assetBundleData.Variant)); return(null); } } AssetBundleBuild[] buildMap = new AssetBundleBuild[m_AssetBundleDatas.Count]; int index = 0; foreach (AssetBundleData assetBundleData in m_AssetBundleDatas.Values) { buildMap[index].assetBundleName = assetBundleData.Name; buildMap[index].assetBundleVariant = assetBundleData.Variant; buildMap[index].assetNames = assetBundleData.GetAssetNames(); index++; } return(buildMap); }
public AssetBundle[] GetAssetBundles() { return(m_AssetBundleCollection.GetAssetBundles()); }