//using System.Collections.Generic; //using System.IO; //using System.Linq; //using UnityEditor; //using UnityEngine; //namespace XGame.Editor.Build.AssetBundles //{ // internal class BundleGroupController // { // private BundleContext _context; // public BundleGroupController(BundleContext context) // { // _context = context; // } // /// // /// 根据分组配置重新设置bundleName // /// TODO: 多语言的Assetbundle分包也需要调整到设置 // /// // public void ModifyBundleNameByGroup() // { // ModifyBundleNameByGroup(CollectBundleGroupNames()); // } // /// // /// 收集Assetbundle分组的GroupName // /// // /// // /// // /// // private Dictionary CollectBundleGroupNames() // { // var groupNameMap = new Dictionary(); // var packerManifest = ABPackerInfoManifest.Load(); // if (packerManifest == null || packerManifest.GroupInfos == null || packerManifest.GroupInfos.Count < 1) // { // return groupNameMap; // } // foreach (var groupInfo in packerManifest.GroupInfos) // { // var groupName = groupInfo.groupName; // if (string.IsNullOrEmpty(groupName) || FileUtil.HasChinese(groupName)) // { // Debug.LogWarning($"[XBuild]AssetbundleGroup 名字为空或者包含中文字符. ID:{groupInfo.GroupId}"); // continue; // } // if (Framework.i18n.LanguageUtils.IsLanguage(groupName)) // { // Debug.LogWarning($"[XBuild]AssetbundleGroup 名字不能为多语言枚举. GroupName:{groupName}"); // continue; // } // groupName = groupName.ToLower(); // foreach (var guid in groupInfo.guidList) // { // if (string.IsNullOrEmpty(guid)) // { // continue; // } // var assetPath = AssetDatabase.GUIDToAssetPath(guid); // if (!assetPath.StartsWith(PathDefine.ResAddressableRelative)) // { // Debug.LogWarning($"[XBuild]AssetbundleGroup 路径错误. GroupName:{groupName} assetPath:{assetPath}"); // continue; // } // if (Directory.Exists(assetPath)) // { // //是文件夹 // var filePaths = FileUtil.FindFiles(assetPath); // foreach (var filePath in filePaths) // { // AddGroupItem(filePath, groupName, groupNameMap); // } // continue; // } // AddGroupItem(assetPath, groupName, groupNameMap); // } // } // Debug.Log($"CollectBundleGroupNames Count:{groupNameMap.Count}"); // return groupNameMap; // } // private void AddGroupItem(string assetPath, string groupName, Dictionary groupNameMap) // { // if (!_context.TryGetAddressableNameByPath(assetPath, out var addressableName)) // { // return; // } // if (groupNameMap.ContainsKey(assetPath)) // { // return; // } // //Debug.Log($"[XBuild]AddGroupItem addressableName:{addressableName} groupName:{groupName}"); // groupNameMap.Add(assetPath, groupName); // } // /// // /// 根据分组配置重新设置bundleName // /// TODO: 多语言的Assetbundle分包也需要调整到设置 // /// // /// // /// // private void ModifyBundleNameByGroup(Dictionary groupNameMap) // { // if (groupNameMap == null || groupNameMap.Count == 0) // return; // var builds = _context.bundleBuildMap.Values.ToArray(); // foreach (var build in builds) // { // if (TryGetGroupName(build.assetNames, groupNameMap, out var groupName)) // { // var buildCopy = build; // buildCopy.assetBundleName = $"{groupName}/{build.assetBundleName}"; // _context.bundleBuildMap[buildCopy.bundleId] = buildCopy; // } // } // } // private bool TryGetGroupName(string[] assetNames, Dictionary groupNameMap, out string groupName) // { // foreach (var assetName in assetNames) // { // if (groupNameMap.ContainsKey(assetName)) // { // groupName = groupNameMap[assetName]; // return true; // } // } // groupName = string.Empty; // return false; // } // } //}