YIUIYooAssetSetting.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace YooAsset.Editor
  5. {
  6. public class YIUIYooAssetSetting : ScriptableObject
  7. {
  8. /// <summary>
  9. /// 显示包裹列表视图
  10. /// </summary>
  11. public bool ShowPackageView = false;
  12. /// <summary>
  13. /// 是否显示编辑器别名
  14. /// </summary>
  15. public bool ShowEditorAlias = false;
  16. /// <summary>
  17. /// 资源包名唯一化
  18. /// </summary>
  19. public bool UniqueBundleName = false;
  20. /// <summary>
  21. /// 包裹列表
  22. /// </summary>
  23. public List<AssetBundleCollectorPackage> Packages = new List<AssetBundleCollectorPackage>();
  24. /// <summary>
  25. /// 清空所有数据
  26. /// </summary>
  27. public void ClearAll()
  28. {
  29. ShowPackageView = false;
  30. UniqueBundleName = false;
  31. ShowEditorAlias = false;
  32. Packages.Clear();
  33. }
  34. /// <summary>
  35. /// 检测包裹配置错误
  36. /// </summary>
  37. public void CheckPackageConfigError(string packageName)
  38. {
  39. var package = GetPackage(packageName);
  40. package.CheckConfigError();
  41. }
  42. /// <summary>
  43. /// 检测所有配置错误
  44. /// </summary>
  45. public void CheckAllPackageConfigError()
  46. {
  47. foreach (var package in Packages)
  48. {
  49. package.CheckConfigError();
  50. }
  51. }
  52. /// <summary>
  53. /// 修复所有配置错误
  54. /// </summary>
  55. public bool FixAllPackageConfigError()
  56. {
  57. bool isFixed = false;
  58. foreach (var package in Packages)
  59. {
  60. if (package.FixConfigError())
  61. {
  62. isFixed = true;
  63. }
  64. }
  65. return isFixed;
  66. }
  67. /// <summary>
  68. /// 获取所有的资源标签
  69. /// </summary>
  70. public List<string> GetPackageAllTags(string packageName)
  71. {
  72. var package = GetPackage(packageName);
  73. return package.GetAllTags();
  74. }
  75. /// <summary>
  76. /// 收集指定包裹的资源文件
  77. /// </summary>
  78. public CollectResult BeginCollect(string packageName, bool simulateBuild, bool useAssetDependencyDB)
  79. {
  80. if (string.IsNullOrEmpty(packageName))
  81. throw new Exception("Build package name is null or empty !");
  82. // 检测配置合法性
  83. var package = GetPackage(packageName);
  84. package.CheckConfigError();
  85. // 创建资源收集命令
  86. IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(package.IgnoreRuleName);
  87. var command = new CollectCommand(packageName, ignoreRule);
  88. command.SimulateBuild = simulateBuild;
  89. command.UniqueBundleName = UniqueBundleName;
  90. command.UseAssetDependencyDB = useAssetDependencyDB;
  91. command.EnableAddressable = package.EnableAddressable;
  92. command.LocationToLower = package.LocationToLower;
  93. command.IncludeAssetGUID = package.IncludeAssetGUID;
  94. command.AutoCollectShaders = package.AutoCollectShaders;
  95. // 开始收集工作
  96. var collectAssets = package.GetCollectAssets(command);
  97. var collectResult = new CollectResult(command, collectAssets);
  98. return collectResult;
  99. }
  100. /// <summary>
  101. /// 获取包裹类
  102. /// </summary>
  103. public AssetBundleCollectorPackage GetPackage(string packageName)
  104. {
  105. foreach (var package in Packages)
  106. {
  107. if (package.PackageName == packageName)
  108. return package;
  109. }
  110. throw new Exception($"Not found package : {packageName}");
  111. }
  112. }
  113. }