public void Hanlde(List <AssetFileGroup> input, out List <BundleFile> output) { output = new List <BundleFile>(); foreach (var assetFileGroup in input) { AssetBundleBuild[] assetBundleBuilds = new AssetBundleBuild[1]; assetBundleBuilds[0].assetBundleName = assetFileGroup.m_BundleName; assetBundleBuilds[0].assetBundleVariant = assetFileGroup.m_BundleVarintsName; string[] assetNames = new string[assetFileGroup.m_AssetFiles.Count]; for (int i = 0; i < assetFileGroup.m_AssetFiles.Count; i++) { assetNames[i] = assetFileGroup.m_AssetFiles[i].m_FilePath; } assetBundleBuilds[0].assetNames = assetNames; if (!System.IO.Directory.Exists(m_BundleCachePath)) { System.IO.Directory.CreateDirectory(m_BundleCachePath); } AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(m_BundleCachePath, assetBundleBuilds, m_Options, EditorUserBuildSettings.activeBuildTarget); if (manifest != null) { foreach (var bundlePath in manifest.GetAllAssetBundles()) { BundleFile bundleFile = new BundleFile() { m_BundleName = bundlePath, m_Path = System.IO.Path.Combine(m_BundleCachePath, bundlePath), m_BFType = BundleFile.BFType.Bundle }; output.Add(bundleFile); } } } }
public void Hanlde(List <AssetFileGroup> input, out List <BundleFile> output) { string cachePath = System.IO.Path.GetFullPath(m_BundleCachePath); AssetBundleBuild[] assetBundleBuilds = new AssetBundleBuild[input.Count]; output = new List <BundleFile>(); for (int k = 0; k < input.Count; k++) { AssetFileGroup assetFileGroup = input[k]; assetBundleBuilds[k].assetBundleName = assetFileGroup.m_BundleName; assetBundleBuilds[k].assetBundleVariant = assetFileGroup.m_BundleVarintsName; List <string> assetsPaths = new List <string>(); for (int i = 0; i < assetFileGroup.m_AssetFiles.Count; i++) { assetsPaths.Add(assetFileGroup.m_AssetFiles[i].m_FilePath); } assetsPaths.Sort(); assetBundleBuilds[k].assetNames = assetsPaths.ToArray(); } if (!System.IO.Directory.Exists(cachePath)) { System.IO.Directory.CreateDirectory(cachePath); } AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(cachePath, assetBundleBuilds, m_Options, EditorUserBuildSettings.activeBuildTarget); if (manifest != null) { foreach (var bundlePath in manifest.GetAllAssetBundles()) { BundleFile bundleFile = new BundleFile() { m_BundleName = bundlePath, m_Path = Path.Combine(cachePath, bundlePath), m_BFType = BundleFile.BFType.Bundle }; output.Add(bundleFile); } //BundleFile manifestFile = new BundleFile() //{ // m_BundleName = Path.GetFileName(cachePath), // m_Path = Path.Combine(cachePath ,System.IO.Path.GetFileName(cachePath)), // m_BFType = BundleFile.BFType.Manifest //}; //output.Add(manifestFile); string locationPath = Path.Combine(cachePath, "locations"); WriteLocation(input, manifest, locationPath); BundleFile loactions = new BundleFile() { m_BundleName = "locations", m_Path = locationPath, m_BFType = BundleFile.BFType.Location }; output.Add(loactions); } }