From 2b48432c6c926e5666adade202d9db99e0429f44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com> Date: Tue, 6 May 2025 11:36:31 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90m=E3=80=91=E5=A2=9E=E5=8A=A0=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E4=B8=80=E9=94=AE=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/BuildAsset/BuildAssetWindow.cs | 45 ++++++++++ .../Editor/MarkAdressable/MarkAdressable.cs | 86 ++++++++++++------- Assets/00.StaryEvo/package.json | 2 +- 3 files changed, 99 insertions(+), 34 deletions(-) diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs index 2a5f9ad..227a1c8 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs @@ -28,6 +28,51 @@ namespace Stary.Evo.Editor { private static BuildAssetWindow window; + [MenuItem("Evo/资源打包(一键)/标记所有资源")] + public static void OneClickMark() + { + //打dll + CompileDllCommand.CompileDllActiveBuildTarget(); + //拷贝dll + MarkAdressable.AddHotfixAddressableDllAll(); + //标记全部资源 + MarkAdressable.AddMarkAll(); + EditorUtility.DisplayDialog("提示", $"标记所有资源完成!", "确定"); + } + + [MenuItem("Evo/资源打包(一键)/打包所有资源")] + public static void OneClickBuild() + { + //打包 + EditorTools.ClearUnityConsole(); + + var DomainAll = CreatAssetWindow.GetCreatDomainAll(); + foreach (var domainEntity in DomainAll) + { + var mp = domainEntity.domainPath.Substring(domainEntity.domainPath.IndexOf("Assets")); + mp = mp.Replace('\\', '/'); + + BuildAssetDataSetting buildAssetDataSetting = + AssetDatabase.LoadAssetAtPath( + $"{mp}/Conf/BuildAssetDataSetting.asset"); + if (buildAssetDataSetting != null) + { + buildAssetDataSetting.environmentType = EnvironmentType.Release; + buildAssetDataSetting.SetEnvironmentType(); + buildAssetDataSetting.viewer = new BuiltinBuildPipelineViewer(buildAssetDataSetting); + buildAssetDataSetting.viewer.clearBuildCacheToggle= true; + buildAssetDataSetting.viewer.SetBuildCacheToggle(); + EditorApplication.delayCall += buildAssetDataSetting.viewer.ExecuteBuild; + } + else + { + Debug.LogError("BuildAssetDataSetting 不存在:" + domainEntity.DomainName); + } + } + EditorUtility.DisplayDialog("提示", $"打包所有资源完成!", "确定"); + } + + [MenuItem("Evo/资源打包工具")] static void ShowWindows() { diff --git a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs index 5299a10..fffc5b7 100644 --- a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs +++ b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs @@ -19,17 +19,16 @@ namespace Stary.Evo.Editor private static string[] configNames = new[] { "DomainConfig" }; - public static string DomainRoot { get { return Application.dataPath + "/Domain"; } } - + public static string MainDomainRoot { get { return Application.dataPath + "/Main"; } } - + // public static string SpriteRemotedAtlas // { // get { return Application.dataPath + "/AddressableRes/SpriteAtlas"; } @@ -51,13 +50,28 @@ namespace Stary.Evo.Editor //[MenuItem("Evo/Hotfix/Addressable")] public static void AddHotfixAddressableDll() { - CopyDllHotUpdateAssembly(BuildAssetWindow.GetBuildPackageName(), $"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/AddressableRes"); + CopyDllHotUpdateAssembly(BuildAssetWindow.GetBuildPackageName(), + $"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/AddressableRes"); CopyDllStrippedAOTDllOutputRootDir($"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/AddressableRes"); //EditorUtility.DisplayDialog("自动标记", "自动Hotfix成功", "确定"); } + public static void AddHotfixAddressableDllAll() + { + var DomainAll = CreatAssetWindow.GetCreatDomainAll(); + + foreach (var domain in DomainAll) + { + CopyDllHotUpdateAssembly(domain.DomainName, $"{DomainRoot}/{domain}/AddressableRes"); + CopyDllStrippedAOTDllOutputRootDir($"{domain}/AddressableRes"); + } + + + //EditorUtility.DisplayDialog("自动标记", "自动Hotfix成功", "确定"); + } + private static void CopyDllHotUpdateAssembly(string domain, string target) { //读取打包dll位置 @@ -65,7 +79,7 @@ namespace Stary.Evo.Editor $"{SettingsUtil.HybridCLRSettings.hotUpdateDllCompileOutputRootDir}/{EditorUserBuildSettings.activeBuildTarget}"; foreach (var dll in SettingsUtil.HybridCLRSettings.hotUpdateAssemblyDefinitions) { - if (dll.name.Contains(domain)) + if (dll.name.Contains(domain)) { string hotfixDllPath = $"{hotUpdateDir}/{dll.name}.dll"; string hotfixDllPathTarget = @@ -108,34 +122,38 @@ namespace Stary.Evo.Editor } } + public static void AddMarkAll() + { + YooAsset.Editor.AssetBundleCollectorSettingData.ClearAll(); + var DomainAll = CreatAssetWindow.GetCreatDomainAll(); + + foreach (var domain in DomainAll) + { + string configPath = + $"Assets/Domain/{domain.DomainName}/Conf/HotfixMainResDomain.asset"; + HotfixMainResDomain hotfixMainResDomain = + AssetDatabase.LoadAssetAtPath(configPath); + packageName = hotfixMainResDomain.hotfixMainResDomainEntity.domain; + Mark(); + if (! domain.DomainName.Equals("Main")) + CreateRes(packageName, + $"{DomainRoot}/{domain.DomainName}/AddressableRes", + $"{DomainRoot}/{domain.DomainName}/HotUpdate"); + else + CreateRes(packageName, + $"{DomainRoot}/{domain.DomainName}/AddressableRes", + $"{MainDomainRoot}/Script/Runtime/HotUpdate"); + } + } + //[MenuItem("Evo/Hotfix/标记资源")] public static void AddMark() { // //清空主包旧数据 - AssetBundleCollectorPackage assetBundleCollectorPackage = null; - // foreach (var package in AssetBundleCollectorSettingData.Setting.Packages) - // { - // if (package.PackageName == "Main") - // { - // assetBundleCollectorPackage = package; - // } - // } - // if (assetBundleCollectorPackage != null) - // { - // YooAsset.Editor.AssetBundleCollectorSettingData.RemovePackage(assetBundleCollectorPackage); - // } - // DomainRoot = DomainMainPath; - // packageName = "Main"; - // Mark(); - // CreateRes(packageName, - // $"{DomainRoot}/Main/AddressableRes", - // $"{DomainRoot}/Main/Script"); - - - + AssetBundleCollectorPackage assetBundleCollectorPackage = null; //copydll - if(!BuildAssetWindow.GetBuildPackageName().Equals("Main")) - AddHotfixAddressableDll(); + if (!BuildAssetWindow.GetBuildPackageName().Equals("Main")) + AddHotfixAddressableDll(); //清空用户旧数据 foreach (var package in AssetBundleCollectorSettingData.Setting.Packages) @@ -145,19 +163,21 @@ namespace Stary.Evo.Editor assetBundleCollectorPackage = package; } } + if (assetBundleCollectorPackage != null) { YooAsset.Editor.AssetBundleCollectorSettingData.RemovePackage(assetBundleCollectorPackage); } + string configPath = $"Assets/Domain/{BuildAssetWindow.GetBuildPackageName()}/Conf/HotfixMainResDomain.asset"; HotfixMainResDomain hotfixMainResDomain = AssetDatabase.LoadAssetAtPath(configPath); packageName = hotfixMainResDomain.hotfixMainResDomainEntity.domain; Mark(); - if(!BuildAssetWindow.GetBuildPackageName().Equals("Main")) - CreateRes(packageName, - $"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/AddressableRes", - $"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/HotUpdate"); + if (!BuildAssetWindow.GetBuildPackageName().Equals("Main")) + CreateRes(packageName, + $"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/AddressableRes", + $"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/HotUpdate"); else CreateRes(packageName, $"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/AddressableRes", @@ -325,7 +345,7 @@ namespace Stary.Evo.Editor AddressRuleName = nameof(AddressByFolderAndFileName), AssetTags = groupName, }; - + //TODO 暂时不设置 // 如果是video目录,设置 // if (groupName == "Video") diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 15c7cd4..9e2448b 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.23", + "version": "1.0.24", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3",