BundleGroupController.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //using System.Collections.Generic;
  2. //using System.IO;
  3. //using System.Linq;
  4. //using UnityEditor;
  5. //using UnityEngine;
  6. //namespace XGame.Editor.Build.AssetBundles
  7. //{
  8. // internal class BundleGroupController
  9. // {
  10. // private BundleContext _context;
  11. // public BundleGroupController(BundleContext context)
  12. // {
  13. // _context = context;
  14. // }
  15. // /// <summary>
  16. // /// 根据分组配置重新设置bundleName
  17. // /// TODO: 多语言的Assetbundle分包也需要调整到设置
  18. // /// </summary>
  19. // public void ModifyBundleNameByGroup()
  20. // {
  21. // ModifyBundleNameByGroup(CollectBundleGroupNames());
  22. // }
  23. // /// <summary>
  24. // /// 收集Assetbundle分组的GroupName
  25. // /// <key: assetPath, value: groupName>
  26. // /// </summary>
  27. // /// <param name="guidToAddressableName"></param>
  28. // /// <returns></returns>
  29. // private Dictionary<string, string> CollectBundleGroupNames()
  30. // {
  31. // var groupNameMap = new Dictionary<string, string>();
  32. // var packerManifest = ABPackerInfoManifest.Load();
  33. // if (packerManifest == null || packerManifest.GroupInfos == null || packerManifest.GroupInfos.Count < 1)
  34. // {
  35. // return groupNameMap;
  36. // }
  37. // foreach (var groupInfo in packerManifest.GroupInfos)
  38. // {
  39. // var groupName = groupInfo.groupName;
  40. // if (string.IsNullOrEmpty(groupName) || FileUtil.HasChinese(groupName))
  41. // {
  42. // Debug.LogWarning($"[XBuild]AssetbundleGroup 名字为空或者包含中文字符. ID:{groupInfo.GroupId}");
  43. // continue;
  44. // }
  45. // if (Framework.i18n.LanguageUtils.IsLanguage(groupName))
  46. // {
  47. // Debug.LogWarning($"[XBuild]AssetbundleGroup 名字不能为多语言枚举. GroupName:{groupName}");
  48. // continue;
  49. // }
  50. // groupName = groupName.ToLower();
  51. // foreach (var guid in groupInfo.guidList)
  52. // {
  53. // if (string.IsNullOrEmpty(guid))
  54. // {
  55. // continue;
  56. // }
  57. // var assetPath = AssetDatabase.GUIDToAssetPath(guid);
  58. // if (!assetPath.StartsWith(PathDefine.ResAddressableRelative))
  59. // {
  60. // Debug.LogWarning($"[XBuild]AssetbundleGroup 路径错误. GroupName:{groupName} assetPath:{assetPath}");
  61. // continue;
  62. // }
  63. // if (Directory.Exists(assetPath))
  64. // {
  65. // //是文件夹
  66. // var filePaths = FileUtil.FindFiles(assetPath);
  67. // foreach (var filePath in filePaths)
  68. // {
  69. // AddGroupItem(filePath, groupName, groupNameMap);
  70. // }
  71. // continue;
  72. // }
  73. // AddGroupItem(assetPath, groupName, groupNameMap);
  74. // }
  75. // }
  76. // Debug.Log($"CollectBundleGroupNames Count:{groupNameMap.Count}");
  77. // return groupNameMap;
  78. // }
  79. // private void AddGroupItem(string assetPath, string groupName, Dictionary<string, string> groupNameMap)
  80. // {
  81. // if (!_context.TryGetAddressableNameByPath(assetPath, out var addressableName))
  82. // {
  83. // return;
  84. // }
  85. // if (groupNameMap.ContainsKey(assetPath))
  86. // {
  87. // return;
  88. // }
  89. // //Debug.Log($"[XBuild]AddGroupItem addressableName:{addressableName} groupName:{groupName}");
  90. // groupNameMap.Add(assetPath, groupName);
  91. // }
  92. // /// <summary>
  93. // /// 根据分组配置重新设置bundleName
  94. // /// TODO: 多语言的Assetbundle分包也需要调整到设置
  95. // /// </summary>
  96. // /// <param name="bundleBuilds"></param>
  97. // /// <param name="groupNameMap"></param>
  98. // private void ModifyBundleNameByGroup(Dictionary<string, string> groupNameMap)
  99. // {
  100. // if (groupNameMap == null || groupNameMap.Count == 0)
  101. // return;
  102. // var builds = _context.bundleBuildMap.Values.ToArray();
  103. // foreach (var build in builds)
  104. // {
  105. // if (TryGetGroupName(build.assetNames, groupNameMap, out var groupName))
  106. // {
  107. // var buildCopy = build;
  108. // buildCopy.assetBundleName = $"{groupName}/{build.assetBundleName}";
  109. // _context.bundleBuildMap[buildCopy.bundleId] = buildCopy;
  110. // }
  111. // }
  112. // }
  113. // private bool TryGetGroupName(string[] assetNames, Dictionary<string, string> groupNameMap, out string groupName)
  114. // {
  115. // foreach (var assetName in assetNames)
  116. // {
  117. // if (groupNameMap.ContainsKey(assetName))
  118. // {
  119. // groupName = groupNameMap[assetName];
  120. // return true;
  121. // }
  122. // }
  123. // groupName = string.Empty;
  124. // return false;
  125. // }
  126. // }
  127. //}