static public void CreateBundleList(ABBuildInfo buildInfo) { BundleVersionList bundleList = new BundleVersionList(); bundleList.BundlesList = new List <URLVersionPair>(); List <BundleInfo> list = new List <BundleInfo>(); GetAllBundle(Model.m_RootLevelBundles.GetChildList(), list); foreach (var item in list) { bundleList.BundlesList.Add(new URLVersionPair() { URL = item.m_Name.fullNativeName, NewCRC = File.ReadAllBytes(buildInfo.outputDirectory + "/" + item.m_Name.fullNativeName).GetHashCode(), PreDownload = item.proLoad }); } string json_text = LitJson.JsonMapper.ToJson(bundleList); StreamWriter fileWriter = new StreamWriter(buildInfo.outputDirectory + "/BundleList.json"); fileWriter.WriteLine(json_text); fileWriter.Close(); fileWriter.Dispose(); AssetDatabase.Refresh(); }
public bool BuildAssetBundles(ABBuildInfo info) { if (info == null) { Debug.Log("Error in build"); return(false); } var manifest = BuildScript.GetManifest(); BuildScript.RemoveUnusedAssetBundleNames(); var assets = manifest.assets; var assetBundleNames = manifest.bundles; var dirs = manifest.dirs; var map = new Dictionary <string, List <string> >(); foreach (var item in manifest.bundles) { map[item] = new List <string>(); } foreach (var item in assets) { var assetPath = dirs[item.dir] + "/" + item.name; map[assetBundleNames[item.bundle]].Add(assetPath); } List <AssetBundleBuild> builds = new List <AssetBundleBuild>(); foreach (var item in map) { builds.Add(new AssetBundleBuild() { assetBundleName = item.Key, assetNames = item.Value.ToArray() }); } var buildManifest = BuildPipeline.BuildAssetBundles(info.outputDirectory, builds.ToArray(), info.options, info.buildTarget); if (buildManifest == null) { Debug.Log("Error in build"); return(false); } foreach (var assetBundleName in buildManifest.GetAllAssetBundles()) { if (info.onBuild != null) { info.onBuild(assetBundleName); } } return(true); }
private void ExecuteSetAssetBundleName() { AssetBundleBuilder builder = new AssetBundleBuilder(); ABBuildInfo abBuildInfo = new ABBuildInfo(); abBuildInfo.buildFolderList = m_UserData.m_BuildFolderList; builder.SetAssetBundleNames(abBuildInfo); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); }
public static void Build(string platform, bool clearFloder) { AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); var outputPath = OUTPUT_PATH + platform; BuildTarget buildTarget = buildTargets[platforms.ToList().IndexOf(platform)]; //1. clear old abs if (clearFloder) { Debug.Log("Clear folder:" + outputPath); if (Directory.Exists(outputPath)) { Directory.Delete(outputPath, true); } Directory.CreateDirectory(outputPath); } else { if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } } //2. build abs BuildAssetBundleOptions opt = BuildAssetBundleOptions.ChunkBasedCompression; ABBuildInfo buildInfo = new ABBuildInfo(); buildInfo.outputDirectory = outputPath; buildInfo.options = opt; buildInfo.buildTarget = buildTarget; AssetBundleBrowser.AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); RemoveManifestFiles(outputPath); }
public void SetAssetBundleNames(ABBuildInfo buildInfo) { mAbBuildInfo = buildInfo; mDependciesFolder = mAbBuildInfo.buildFolderList; mSingleFolder = mAbBuildInfo.buildFolderList.FindAll(bf => bf.SingleAssetBundle); mBuildMap.Clear(); mLeafNodes.Clear(); mAllAssetNodes.Clear(); CollectDependcy(); BuildResourceBuildMap(); CollectSingle(); SetAssetBundleNames(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); }
public static void Build() { // copy ui form client to resource CopyUIFormClientToResource(); string outPath = GetAssetBundleOutPath(); if (!Directory.Exists(outPath)) { Directory.CreateDirectory(outPath); } ABBuildInfo buildInfo = new ABBuildInfo(); buildInfo.outputDirectory = outPath; buildInfo.options = BuildAssetBundleOptions.ChunkBasedCompression; buildInfo.buildTarget = EditorUserBuildSettings.activeBuildTarget; AssetBundleBrowser.AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); }
private void ExecuteBuild() { if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOutputDirectory) { if (string.IsNullOrEmpty(m_UserData.m_OutputPath)) { BrowseForFolder(); } if (string.IsNullOrEmpty(m_UserData.m_OutputPath)) //in case they hit "cancel" on the open browser { Debug.LogError("AssetBundle Build: No valid output path for build."); return; } if (m_ForceRebuild.state) { string message = "Do you want to delete all files in the directory " + m_UserData.m_OutputPath; if (m_CopyToStreaming.state) { message += " and " + m_streamingPath; } message += "?"; if (EditorUtility.DisplayDialog("File delete confirmation", message, "Yes", "No")) { try { if (Directory.Exists(m_UserData.m_OutputPath)) { Directory.Delete(m_UserData.m_OutputPath, true); } if (m_CopyToStreaming.state) { if (Directory.Exists(m_streamingPath)) { Directory.Delete(m_streamingPath, true); } } } catch (System.Exception e) { Debug.LogException(e); } } } if (!Directory.Exists(m_UserData.m_OutputPath)) { Directory.CreateDirectory(m_UserData.m_OutputPath); } } BuildAssetBundleOptions opt = BuildAssetBundleOptions.None; if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOptions) { if (m_UserData.m_Compression == CompressOptions.Uncompressed) { opt |= BuildAssetBundleOptions.UncompressedAssetBundle; } else if (m_UserData.m_Compression == CompressOptions.ChunkBasedCompression) { opt |= BuildAssetBundleOptions.ChunkBasedCompression; } foreach (var tog in m_ToggleData) { if (tog.state) { opt |= tog.option; } } } ABBuildInfo buildInfo = new ABBuildInfo(); buildInfo.outputDirectory = m_UserData.m_OutputPath; buildInfo.options = opt; buildInfo.buildTarget = (BuildTarget)m_UserData.m_BuildTarget; buildInfo.onBuild = (assetBundleName) => { if (m_InspectTab == null) { return; } m_InspectTab.AddBundleFolder(buildInfo.outputDirectory); m_InspectTab.RefreshBundles(); }; AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); if (m_CopyToStreaming.state) { DirectoryCopy(m_UserData.m_OutputPath, m_streamingPath); } }
private void ExecuteBuild() { if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOutputDirectory) { if ((int)EditorUserBuildSettings.activeBuildTarget != (int)m_UserData.m_BuildTarget) { if (!EditorUtility.DisplayDialog("Switch Platform confirm", string.Format("Current activeBuildTarget is {0},doesn't match {1} .", EditorUserBuildSettings.activeBuildTarget, m_UserData.m_BuildTarget), "Yes", "No")) { return; } } if (string.IsNullOrEmpty(m_UserData.m_OutputPath)) { BrowseForFolder(); } if (string.IsNullOrEmpty(m_UserData.m_OutputPath)) //in case they hit "cancel" on the open browser { Debug.LogError("AssetBundle Build: No valid output path for build."); return; } } if (m_ForceRebuild.state) { var tempOutputClear = Directory.Exists(m_UserData.m_OutputPath) ? m_UserData.m_OutputPath : string.Empty; var tempStreamClear = m_CopyToStreaming.state && Directory.Exists(m_streamingPath) ? m_UserData.m_OutputPath : string.Empty; var tempSkip = false; var message = "Do you want to delete all files in the directory "; if (!string.IsNullOrEmpty(tempOutputClear)) { message += m_UserData.m_OutputPath; if (m_CopyToStreaming.state && !string.IsNullOrEmpty(tempStreamClear)) { message += " and " + m_streamingPath; } } else if (m_CopyToStreaming.state && !string.IsNullOrEmpty(tempStreamClear)) { message += m_streamingPath; } else { tempSkip = true; } if (!tempSkip) { message += "?"; if (EditorUtility.DisplayDialog("File delete confirmation", message, "Yes", "No")) { try { if (Directory.Exists(m_UserData.m_OutputPath)) { Directory.Delete(m_UserData.m_OutputPath, true); } if (m_CopyToStreaming.state) { if (Directory.Exists(m_streamingPath)) { Directory.Delete(m_streamingPath, true); } } } catch (System.Exception e) { Debug.LogException(e); } } } } if (!Directory.Exists(m_UserData.m_OutputPath)) { Directory.CreateDirectory(m_UserData.m_OutputPath); } EditorUtility.DisplayProgressBar("Build AssetBundle", "prepare...", 0); BuildAssetBundleOptions opt = BuildAssetBundleOptions.None; if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOptions) { if (m_UserData.m_Compression == CompressOptions.Uncompressed) { opt |= BuildAssetBundleOptions.UncompressedAssetBundle; } else if (m_UserData.m_Compression == CompressOptions.ChunkBasedCompression) { opt |= BuildAssetBundleOptions.ChunkBasedCompression; } foreach (var tog in m_ToggleData) { if (tog.state) { opt |= tog.option; } } } var tempBuildRet = false; try { var buildInfo = new ABBuildInfo() { outputDirectory = m_UserData.m_OutputPath, options = opt, buildTarget = (BuildTarget)m_UserData.m_BuildTarget, }; buildInfo.onBuild = (assetBundleName) => { if (m_InspectTab == null) { return; } m_InspectTab.AddBundleFolder(buildInfo.outputDirectory); m_InspectTab.RefreshBundles(); }; EditorUtility.DisplayProgressBar("Build AssetBundle", "Clear Inspector Selection...", 0.1f); Selection.activeObject = null; AssetBundleBrowserMain.instance.m_InspectTab.ClearData(); EditorUtility.DisplayProgressBar("Build AssetBundle", "BuildAssetBundles ...", 0.2f); tempBuildRet = AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo); EditorUtility.DisplayProgressBar("Build AssetBundle", "BuildAssetBundles ...", 0.6f); if (tempBuildRet) { if (m_ClearManifest.state) { EditorUtility.DisplayProgressBar("Build AssetBundle", "ClearManifest ...", 0.7f); MiscUtils.ClearManifestByPath(m_UserData.m_OutputPath); } if (m_CopyToStreaming.state) { EditorUtility.DisplayProgressBar("Build AssetBundle", "Copy to Streaming Path...", 0.8f); DirectoryCopy(m_UserData.m_OutputPath, m_streamingPath); } } EditorUtility.DisplayProgressBar("Build AssetBundle", "Refresh AssetDatabase...", 0.9f); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); } catch (System.Exception e) { Debug.LogException(e); } finally { EditorUtility.ClearProgressBar(); } AssetBundleBrowserMain.instance.ShowNotification(new GUIContent(tempBuildRet ? "BuildAssetBundle Finished." : "BuildAssetBundle failed.")); }
private void ExecuteBuild() { var prebuildTime = System.DateTime.Now; if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOutputDirectory) { if (m_ForceRebuild.state) { string message = "Do you want to delete all files in the directory " + Constants.BuildPath + "?"; if (EditorUtility.DisplayDialog("File delete confirmation", message, "Yes", "No")) { try { if (Directory.Exists(Constants.BuildPath)) { Directory.Delete(Constants.BuildPath, true); } } catch (System.Exception e) { Debug.LogException(e); } } } if (!Directory.Exists(Constants.BuildPath)) { Directory.CreateDirectory(Constants.BuildPath); } } BuildAssetBundleOptions opt = BuildAssetBundleOptions.None; if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOptions) { opt |= BuildAssetBundleOptions.UncompressedAssetBundle; foreach (var tog in m_ToggleData) { if (tog.state) { opt |= tog.option; } } } ABBuildInfo buildInfo = new ABBuildInfo(); buildInfo.outputDirectory = Constants.BuildPath; buildInfo.options = opt; buildInfo.buildTarget = BuildTarget.StandaloneWindows; buildInfo.onBuild = (assetBundleName) => { if (m_InspectTab == null) { return; } m_InspectTab.AddBundleFolder(buildInfo.outputDirectory); m_InspectTab.RefreshBundles(); }; AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo); DirectoryInfo di = new DirectoryInfo(buildInfo.outputDirectory); List <string> changedFiles = di.GetFiles("*.unity3d", SearchOption.AllDirectories).Where(x => x.LastWriteTime >= prebuildTime).Select(x => x.FullName).ToList(); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); SB3UScript.BuildAndRunScripts(Constants.BuildPath, m_UserData.m_KoikatsuPath, m_UserData.m_Compression, changedFiles); if (changedFiles.Count == 1) { Debug.Log("Successfully built 1 asset bundle."); } else { Debug.Log("Successfully built " + changedFiles.Count + " asset bundles."); } }
public bool BuildAssetBundles(ABBuildInfo info) { Debug.Log("hahhshiehf"); // throw new System.NotImplementedException(); return(true); }