static void BuildAssetBundles() { AssetBundleBuildConfig config = LoadAssetAtPath <AssetBundleBuildConfig>(savePath); if (config == null) { return; } AssetBundleBuilder5x builder = new AssetBundleBuilder5x(new FastAssetBundlePathResolver()); builder.Begin(); for (int i = 0; i < config.filters.Count; i++) { AssetBundleFilter f = config.filters[i]; if (f.valid) { builder.AddRootTargets(new DirectoryInfo(f.path), new string[] { f.filter }); } } builder.Export(); builder.End(); }
static void BuildAssetBundles() { AssetBundleBuildConfig config = AssetDatabase.LoadAssetAtPath <AssetBundleBuildConfig>(savePath); if (config == null) { return; } #if UNITY_5 ABBuilder builder = new AssetBundleBuilder5x(new AssetBundlePathResolver()); #else ABBuilder builder = new AssetBundleBuilder4x(new AssetBundlePathResolver()); #endif builder.SetDataWriter(config.depInfoFileFormat == AssetBundleBuildConfig.Format.Text ? new AssetBundleDataWriter() : new AssetBundleDataBinaryWriter()); builder.Begin(); for (int i = 0; i < config.filters.Count; i++) { AssetBundleFilter f = config.filters[i]; if (f.valid) { builder.AddRootTargets(new DirectoryInfo(f.path), new string[] { f.filter }); } } builder.Export(); builder.End(); }
void InitConfig() { _config = LoadAssetAtPath <AssetBundleBuildConfig>(savePath); if (_config == null) { _config = CreateInstance <AssetBundleBuildConfig>(); } }
void InitConfig() { mConfig = ABBuilderTools.LoadAssetAtPath <AssetBundleBuildConfig>(ABBuilderTools.SavePath); if (mConfig == null) { mConfig = new AssetBundleBuildConfig(); } }
public void IntiConfig() { ReadConfig(); AssetBundleBuildConfig buildConfig = ABBuilderTools.LoadAssetAtPath <AssetBundleBuildConfig>(ABBuilderTools.SavePath); for (int i = 0; i < buildConfig.filters.Count; i++) { AssetBundleFilter f = buildConfig.filters[i]; AddRootTargets(new DirectoryInfo(f.path), f.type, f.filter.Split('|')); } }
//根据现有配置 建立Ab名字和Path的关系 public static void BuildReleation() { AssetBundleBuildConfig assetBundleBuildConfig = AssetDatabase.LoadAssetAtPath <AssetBundleBuildConfig>(MPathUtils.ASSETBUNDLE_CONFIG_PATH); //下面这个Foreach 直接添加配置的Config信息到Dic里面 foreach (var item in assetBundleBuildConfig.m_allFileDirAb) { if (m_allFileDirDic.ContainsKey(item.abName)) { Debug.LogError("当前m_allFileDirDic里面已经有这个Ab名了"); } else { m_allFileDirDic.Add(item.abName, item.abDir); m_AddedPathList.Add(item.abDir); m_EffectiveFile.Add(item.abDir); } } //1 首先找到配置文件夹下的所有文件 //2 一次找到每个文件的依赖关系 //3 去已添加的依赖 string[] allFileGuids = AssetDatabase.FindAssets("t:prefab", assetBundleBuildConfig.m_allFilePath.ToArray()); for (int i = 0; i < allFileGuids.Length; i++) { string filePath = AssetDatabase.GUIDToAssetPath(allFileGuids[i]); GameObject gameObject = AssetDatabase.LoadAssetAtPath <GameObject>(filePath); EditorUtility.DisplayCancelableProgressBar("Calculate Ab Releation", "ResPath :" + filePath, i / allFileGuids.Length); //找到这个文件的所有依赖项 找到的依赖项包括本身 string[] dependence = AssetDatabase.GetDependencies(filePath); List <string> fileAllDependeceList = new List <string>(); for (int z = 0; z < dependence.Length; z++) { if (!dependence[z].EndsWith(".cs") && !CheckPathIsAdded(dependence[z])) { fileAllDependeceList.Add(dependence[z]); m_AddedPathList.Add(dependence[z]); } } m_abWithDepenceDic.Add(gameObject.name, fileAllDependeceList); m_EffectiveFile.Add(filePath); } }
void OnGUI() { bool execBuild = false; if (config == null) { config = AssetDatabase.LoadAssetAtPath <AssetBundleBuildConfig>(savePath); if (config == null) { config = new AssetBundleBuildConfig(); } } UpdateStyles(); //tool bar GUILayout.BeginHorizontal(Styles.toolbar); { if (GUILayout.Button("Add", Styles.toolbarButton)) { config.filters.Add(new AssetBundleFilter()); } if (GUILayout.Button("Save", Styles.toolbarButton)) { Save(); } GUILayout.FlexibleSpace(); if (GUILayout.Button("Build", Styles.toolbarButton)) { execBuild = true; } } GUILayout.EndHorizontal(); //context GUILayout.BeginVertical(); //format GUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("DepInfoFileFormat"); config.depInfoFileFormat = (AssetBundleBuildConfig.Format)EditorGUILayout.EnumPopup(config.depInfoFileFormat); } GUILayout.EndHorizontal(); GUILayout.Space(10); for (int i = 0; i < config.filters.Count; i++) { AssetBundleFilter filter = config.filters[i]; GUILayout.BeginHorizontal(); { filter.valid = GUILayout.Toggle(filter.valid, "", GUILayout.ExpandWidth(false)); filter.path = GUILayout.TextField(filter.path, GUILayout.ExpandWidth(true)); if (GUILayout.Button("Select", GUILayout.ExpandWidth(false))) { string dataPath = Application.dataPath; string selectedPath = EditorUtility.OpenFolderPanel("Path", dataPath, ""); if (!string.IsNullOrEmpty(selectedPath)) { if (selectedPath.StartsWith(dataPath)) { filter.path = "Assets/" + selectedPath.Substring(dataPath.Length + 1); } else { ShowNotification(new GUIContent("不能在Assets目录之外!")); } } } filter.filter = GUILayout.TextField(filter.filter, GUILayout.Width(200)); if (GUILayout.Button("X", GUILayout.ExpandWidth(false))) { config.filters.RemoveAt(i); i--; } } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); //set dirty if (GUI.changed) { EditorUtility.SetDirty(config); } if (execBuild) { Build(); } }