From 77e19b097b99217ac20b29578ff56ef77720e537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com> Date: Wed, 30 Apr 2025 16:15:11 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E3=80=90m=E3=80=91=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E7=BB=84=E4=BB=B6=E5=AD=98=E5=82=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RunTime/Abstract/AbstractInformation.cs | 141 +++++++++++++----- Assets/02.InformationSave/package.json | 2 +- 2 files changed, 101 insertions(+), 42 deletions(-) diff --git a/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs b/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs index dd0f603..12f8a31 100644 --- a/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs +++ b/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs @@ -26,6 +26,7 @@ namespace Stary.Evo.InformationSave public abstract void Save(int index); public abstract void Switch(int index); + public virtual T GetTransform(string desc) { int index = _list.FindIndex(n => n.desc == desc); @@ -57,7 +58,12 @@ namespace Stary.Evo.InformationSave //更新 public void UpdateInformation() { - String sceneNmae = gameObject.scene.name; + string guid = GetPrefabGUID(this.gameObject)+GetPrefabHierarchyPath(this.gameObject); + if (guid == "") + { + UnityEditor.EditorUtility.DisplayDialog("错误", "可能存在错误\n1、无法在prefab预览中修改数据\n2、新增加物体需先同步为prefab", "确定"); + return; + } ScriptObjectSave scriptObjectSaveData = Resources.Load(path); if (scriptObjectSaveData == null) { @@ -65,14 +71,14 @@ namespace Stary.Evo.InformationSave return; } - if (scriptObjectSaveData.dic.ContainsKey(sceneNmae + gameObject.name)) + if (scriptObjectSaveData.dic.ContainsKey(guid)) { _list.Clear(); - _list = scriptObjectSaveData.dic[sceneNmae + gameObject.name].OfType().ToList(); + _list = scriptObjectSaveData.dic[guid].OfType().ToList(); } else { - Debug.LogError("UnityEvo:ScriptObjectSaveData中未存储场景:"+ sceneNmae + " 中物体:" + gameObject.name + "的数据!!!"); + Debug.LogError($"UnityEvo:ScriptObjectSaveData中未存储物体名为:{this.gameObject}\n guid为:{guid}的数据!!!"); } } @@ -80,49 +86,53 @@ namespace Stary.Evo.InformationSave public bool PlayingSave() { //文件保存 - if (Application.isEditor) + + string guid = GetPrefabGUID(this.gameObject)+GetPrefabHierarchyPath(this.gameObject); + if (guid == "") { - String sceneNmae = gameObject.scene.name; - // 加载 ScriptObjectSaveData - ScriptObjectSave scriptObjectSaveData = Resources.Load(path); - if(scriptObjectSaveData == null) - { - scriptObjectSaveData = CheckAndCreateFoldersAndAsset(); - //Debug.Log("创建了ScriptObjectSaveData文件"); - } + UnityEditor.EditorUtility.DisplayDialog("错误", "可能存在错误\n1、无法在prefab预览中修改数据\n2、新增加物体需先同步为prefab", "确定"); + return false; + } + // 加载 ScriptObjectSaveData + ScriptObjectSave scriptObjectSaveData = Resources.Load(path); + if (scriptObjectSaveData == null) + { + scriptObjectSaveData = CheckAndCreateFoldersAndAsset(); + //Debug.Log("创建了ScriptObjectSaveData文件"); + } - if (scriptObjectSaveData.dic == null) - { - Debug.LogError("UnityEvo:ScriptObjectSaveData的dic为空"); - return false; - } + if (scriptObjectSaveData.dic == null) + { + Debug.LogError("UnityEvo:ScriptObjectSaveData的dic为空"); + return false; + } - // 检查是否已经存在相同的键 - if (scriptObjectSaveData.dic.ContainsKey(sceneNmae + gameObject.name)) + // 检查是否已经存在相同的键 + if (scriptObjectSaveData.dic.ContainsKey(guid)) + { + // 如果存在,选择是否替换原有的 List + if (UnityEditor.EditorUtility.DisplayDialog("提示", + $"数据集下已有相同名称的物体数据\n是否覆盖更新!!!\n 物体名为:{this.gameObject}\n guid为:{guid}", "确定", + "取消")) { - // 如果存在,选择是否替换原有的 List - if (UnityEditor.EditorUtility.DisplayDialog("提示", "数据集下已有相同名称的物体数据\n是否覆盖更新!!!\n" + "场景名:" + sceneNmae + "\n物体名:" + gameObject.name, "确定", "取消")) - { - scriptObjectSaveData.dic[sceneNmae + gameObject.name] = new List(_list); - } - else - { - return false; - } + scriptObjectSaveData.dic[guid] = new List(_list); } else { - // 如果不存在,添加新的键值对 - scriptObjectSaveData.dic.Add(sceneNmae + gameObject.name, new List(_list)); + return false; } - AssetDatabase.SaveAssets(); - EditorUtility.SetDirty(scriptObjectSaveData); - AssetDatabase.Refresh(); - - return true; + } + else + { + // 如果不存在,添加新的键值对 + scriptObjectSaveData.dic.Add(guid, new List(_list)); } - return false; + AssetDatabase.SaveAssets(); + EditorUtility.SetDirty(scriptObjectSaveData); + AssetDatabase.Refresh(); + + return true; } private ScriptObjectSave CheckAndCreateFoldersAndAsset() @@ -148,17 +158,19 @@ namespace Stary.Evo.InformationSave // 创建ScriptObjectSaveData.asset文件 scriptableObject = ScriptableObject.CreateInstance(); - AssetDatabase.CreateAsset(scriptableObject, "Assets/" + ResourcesFolderName + "/" + InformationSaveDataFolderName + "/" + ScriptObjectSaveDataFileName + ".asset"); + AssetDatabase.CreateAsset(scriptableObject, + "Assets/" + ResourcesFolderName + "/" + InformationSaveDataFolderName + "/" + + ScriptObjectSaveDataFileName + ".asset"); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); - Debug.Log("UnityEvo:创建了: " + "Assets/" + ResourcesFolderName + "/" + InformationSaveDataFolderName + "/" + ScriptObjectSaveDataFileName + ".asset 资产"); + Debug.Log("UnityEvo:创建了: " + "Assets/" + ResourcesFolderName + "/" + InformationSaveDataFolderName + "/" + + ScriptObjectSaveDataFileName + ".asset 资产"); return scriptableObject; } //绘制 public override void Draw() { - int length = _list.Count; int deleteIndex = -1; for (int i = 0; i < length; i++) @@ -209,7 +221,53 @@ namespace Stary.Evo.InformationSave GUILayout.EndHorizontal(); } - + private string GetCurrentGUID() + { + string assetPath = AssetDatabase.GetAssetPath(this); + if (!string.IsNullOrEmpty(assetPath)) + { + return AssetDatabase.AssetPathToGUID(assetPath); + } + + return string.Empty; + } + + private string GetPrefabGUID(GameObject obj) + { + string assetPath = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(obj); + Debug.Log("UnityEvo:GetPrefabHierarchyPath:" + GetPrefabHierarchyPath(obj)); + + if (!string.IsNullOrEmpty(assetPath)) + { + return AssetDatabase.AssetPathToGUID(assetPath); + } + + return string.Empty; + } + + + private string GetPrefabHierarchyPath(GameObject obj) + { + var path = new System.Text.StringBuilder(); + var current = obj.transform; + //检测该预制体是否是实例 + var root = PrefabUtility.GetNearestPrefabInstanceRoot(obj); + if (root != null) + { + while (current != null && current != root.transform) + { + path.Insert(0, current.name); + path.Insert(0, "/"); + current = current.parent; + } + + + return path.ToString(); + } + + return string.Empty; + } + #else public override void Draw(){} #endif @@ -217,6 +275,7 @@ namespace Stary.Evo.InformationSave #endregion + [System.Serializable] public class InformationBase { diff --git a/Assets/02.InformationSave/package.json b/Assets/02.InformationSave/package.json index 9be7c4b..44f03a6 100644 --- a/Assets/02.InformationSave/package.json +++ b/Assets/02.InformationSave/package.json @@ -1,7 +1,7 @@ { "name": "com.staryevo.informationsave", "displayName": "02.InformationSave", - "version": "1.0.3", + "version": "1.0.4", "description": "位置配置工具", "unity": "2021.3", "unityRelease": "30f1", From 8a8322e1e1a6d56747813f9750575c236a17e2b0 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 10:27:31 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E3=80=90m=E3=80=9100=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs | 2 ++ Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs index e5410d9..b49a484 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs @@ -120,6 +120,8 @@ namespace Stary.Evo.Editor // [OnValueChanged("SetEncryptionServices")] // public Type encryption; + + [HideLabel] public AbstractBuildPipelineViewer viewer; [HideLabel] private Dictionary _viewers; diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 43b039f..15c7cd4 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.22", + "version": "1.0.23", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3", 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 3/9] =?UTF-8?q?=E3=80=90m=E3=80=91=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=A4=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", From 085b198b13ab466b3c31441767aa104e285ac48d 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 14:58:56 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E3=80=90fix=E3=80=91=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E9=81=97=E6=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs | 4 ++-- Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs index fffc5b7..253e7ed 100644 --- a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs +++ b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs @@ -64,8 +64,8 @@ namespace Stary.Evo.Editor foreach (var domain in DomainAll) { - CopyDllHotUpdateAssembly(domain.DomainName, $"{DomainRoot}/{domain}/AddressableRes"); - CopyDllStrippedAOTDllOutputRootDir($"{domain}/AddressableRes"); + CopyDllHotUpdateAssembly(domain.DomainName, $"{DomainRoot}/{domain.DomainName}/AddressableRes"); + CopyDllStrippedAOTDllOutputRootDir($"{domain.DomainName}/AddressableRes"); } diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 9e2448b..56fc71f 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.24", + "version": "1.0.25", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3", From a9e8679ea1d553646de32ac38b91dfa69cb94522 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 16:54:34 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E3=80=90m=E3=80=91=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs | 2 +- Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs index 253e7ed..33941b2 100644 --- a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs +++ b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs @@ -65,7 +65,7 @@ namespace Stary.Evo.Editor foreach (var domain in DomainAll) { CopyDllHotUpdateAssembly(domain.DomainName, $"{DomainRoot}/{domain.DomainName}/AddressableRes"); - CopyDllStrippedAOTDllOutputRootDir($"{domain.DomainName}/AddressableRes"); + CopyDllStrippedAOTDllOutputRootDir($"{DomainRoot}/{domain.DomainName}/AddressableRes"); } diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 56fc71f..31a7c04 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.25", + "version": "1.0.26", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3", From 5ccf483e953206aa1f38fc0f2f2802b3107491d3 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 17:23:27 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs | 1 - Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs index b49a484..4a92c97 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs @@ -14,7 +14,6 @@ namespace Stary.Evo.Editor public void OnEnable() { - GetPackageVersion(); oldVersionX = packageVersionX; oldVersionY = packageVersionY; oldVersionZ = packageVersionZ; diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 31a7c04..a1e4688 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.26", + "version": "1.0.27", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3", From e499bba73a5a387d06eaf4d107177b61157c53f7 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 17:33:55 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=93=E5=8C=85?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=BA=9Bbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/00.StaryEvo/Editor/BuildAsset/IBuildPipelineViewer.cs | 5 +++++ Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/IBuildPipelineViewer.cs b/Assets/00.StaryEvo/Editor/BuildAsset/IBuildPipelineViewer.cs index 4926b81..bdec8c4 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/IBuildPipelineViewer.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/IBuildPipelineViewer.cs @@ -60,10 +60,15 @@ namespace Stary.Evo.Editor { this.dataSetting = dataSetting; useAssetDependencyDBToggle = true; + SetUseAssetDependencyDB(); clearBuildCacheToggle = false; + SetBuildCacheToggle(); compression = ECompressOption.LZ4; + SetCompression(); fileNameStyle = EFileNameStyle.BundleName; + SetFileNameStyle(); copyBuildinFileOption = EBuildinFileCopyOption.ClearAndCopyAll; + SetCopyBuildinFileOption(); } #region AssetBuild diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index a1e4688..a7cc130 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.27", + "version": "1.0.28", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3", From 4688a5c52b644f3a2721cdea5dd9b29185aa4492 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 17:51:24 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs | 2 +- Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs index 4a92c97..0a72901 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetDataSetting.cs @@ -13,7 +13,7 @@ namespace Stary.Evo.Editor { public void OnEnable() { - + BuildPipelineViewer(); oldVersionX = packageVersionX; oldVersionY = packageVersionY; oldVersionZ = packageVersionZ; diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index a7cc130..9e1d91e 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.28", + "version": "1.0.29", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3", From da2c415e4fd7e074b7f853b51720321f04dee27e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com> Date: Wed, 7 May 2025 10:50:44 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E3=80=90m=E3=80=91=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=89=93=E5=8C=85=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/BuildAsset/BuildAssetWindow.cs | 45 +------- .../BuildAsset/BuiltinBuildPipelineViewer.cs | 4 +- .../Editor/BuildAsset/CreatAssetWindow.cs | 3 - .../Editor/BuildAsset/OneKeyBuildWindow.cs | 100 ++++++++++++++++++ .../BuildAsset/OneKeyBuildWindow.cs.meta | 3 + .../BuildAsset/RawfileBuildpipelineViewer.cs | 4 +- .../ScriptableBuildPipelineViewer.cs | 4 +- .../Editor/MarkAdressable/MarkAdressable.cs | 49 +++++---- Assets/00.StaryEvo/package.json | 2 +- 9 files changed, 141 insertions(+), 73 deletions(-) create mode 100644 Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs create mode 100644 Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs.meta diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs index 227a1c8..840fc0e 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs @@ -28,50 +28,7 @@ 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/BuildAsset/BuiltinBuildPipelineViewer.cs b/Assets/00.StaryEvo/Editor/BuildAsset/BuiltinBuildPipelineViewer.cs index 966d9b1..30db9af 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/BuiltinBuildPipelineViewer.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/BuiltinBuildPipelineViewer.cs @@ -1,5 +1,6 @@ using System; using UnityEditor; +using UnityEngine; using YooAsset; using YooAsset.Editor; @@ -44,7 +45,8 @@ namespace Stary.Evo.Editor var buildResult = pipeline.Run(buildParameters, true); if (buildResult.Success) { - EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); + Debug.Log($"Build Success! 【{buildResult.OutputPackageDirectory}】"); + //EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); base.ExecuteBuild(); } diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/CreatAssetWindow.cs b/Assets/00.StaryEvo/Editor/BuildAsset/CreatAssetWindow.cs index 0fc0042..a63542f 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/CreatAssetWindow.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/CreatAssetWindow.cs @@ -2,13 +2,10 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Threading.Tasks; -using EditorFramework; using HybridCLR.Editor; using HybridCLR.Editor.Settings; using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; -using Sirenix.Utilities; using Stary.Evo.InformationSave; using UnityEditor; using UnityEditorInternal; diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs b/Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs new file mode 100644 index 0000000..f32bd2b --- /dev/null +++ b/Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using HybridCLR.Editor; +using HybridCLR.Editor.Commands; +using HybridCLR.Editor.Settings; +using Sirenix.OdinInspector; +using Sirenix.OdinInspector.Editor; +using Stary.Evo.InformationSave; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; +using YooAsset.Editor; + +namespace Stary.Evo.Editor +{ + public class OneKeyBuildWindow : OdinEditorWindow + { + [MenuItem("Evo/(一键)打包工具")] + static void Init() + { + var window = (OneKeyBuildWindow)EditorWindow.GetWindow(typeof(OneKeyBuildWindow)); + window.Show(); + } + + [ListDrawerSettings(DraggableItems = false, ShowFoldout = false, ShowPaging = false, ShowItemCount = false, + HideRemoveButton = true)] + public List OneKeyBUildEntities = new List(); + + protected override void Initialize() + { + base.Initialize(); + var creatDomainAll = CreatAssetWindow.GetCreatDomainAll(); + foreach (var domainEntity in creatDomainAll) + { + OneKeyBUildEntities.Add(new OneKeyBUildEntity() + { + DomainName = domainEntity.DomainName + }); + } + } + + [Button("(一键)标记选择资源",ButtonSizes.Large)] + public void OneClickMark() + { + //打dll + CompileDllCommand.CompileDllActiveBuildTarget(); + //拷贝dll + MarkAdressable.AddHotfixAddressableDllAll(OneKeyBUildEntities); + //标记全部资源 + MarkAdressable.AddMarkAll(OneKeyBUildEntities); + EditorUtility.DisplayDialog("提示", $"标记所有资源完成!", "确定"); + } + + [Button("(一键)打包选择资源",ButtonSizes.Large)] + public void OneClickBuild() + { + //打包 + EditorTools.ClearUnityConsole(); + + foreach (var oneKeyBUildEntity in OneKeyBUildEntities) + { + if (oneKeyBUildEntity.isRaw) + { + + + BuildAssetDataSetting buildAssetDataSetting = + AssetDatabase.LoadAssetAtPath( + $"Assets/Domain/{oneKeyBUildEntity.DomainName}/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 不存在:" + oneKeyBUildEntity.DomainName); + } + } + } + + EditorUtility.DisplayDialog("提示", $"开始打包资源!", "确定"); + } + } + + public struct OneKeyBUildEntity + { + [Title("是否打包", titleAlignment: TitleAlignments.Centered)] [HideLabel, HorizontalGroup("OneKeyBUildEntity")] + public bool isRaw; + + [Title("包名", titleAlignment: TitleAlignments.Centered)] + [HideLabel, ReadOnly, HorizontalGroup("OneKeyBUildEntity")] + public string DomainName; + } +} \ No newline at end of file diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs.meta b/Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs.meta new file mode 100644 index 0000000..d84d92d --- /dev/null +++ b/Assets/00.StaryEvo/Editor/BuildAsset/OneKeyBuildWindow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 26f920eb9cb048179fdc641cfd92ed93 +timeCreated: 1746583992 \ No newline at end of file diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/RawfileBuildpipelineViewer.cs b/Assets/00.StaryEvo/Editor/BuildAsset/RawfileBuildpipelineViewer.cs index b97cdcf..21f6085 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/RawfileBuildpipelineViewer.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/RawfileBuildpipelineViewer.cs @@ -1,5 +1,6 @@ using System; using UnityEditor; +using UnityEngine; using YooAsset; using YooAsset.Editor; @@ -43,7 +44,8 @@ namespace Stary.Evo.Editor var buildResult = pipeline.Run(buildParameters, true); if (buildResult.Success) { - EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); + Debug.Log($"Build Success! 【{buildResult.OutputPackageDirectory}】"); + // EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); base.ExecuteBuild(); } } diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs b/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs index 9115d8f..d008e90 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs @@ -1,5 +1,6 @@ using System; using UnityEditor; +using UnityEngine; using YooAsset; using YooAsset.Editor; @@ -46,7 +47,8 @@ namespace Stary.Evo.Editor var buildResult = pipeline.Run(buildParameters, true); if (buildResult.Success) { - EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); + Debug.Log($"Build Success! 【{buildResult.OutputPackageDirectory}】"); + // EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); base.ExecuteBuild(); } } diff --git a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs index 33941b2..c732df4 100644 --- a/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs +++ b/Assets/00.StaryEvo/Editor/MarkAdressable/MarkAdressable.cs @@ -58,14 +58,17 @@ namespace Stary.Evo.Editor //EditorUtility.DisplayDialog("自动标记", "自动Hotfix成功", "确定"); } - public static void AddHotfixAddressableDllAll() + public static void AddHotfixAddressableDllAll(List oneKeyBUildEntities) { var DomainAll = CreatAssetWindow.GetCreatDomainAll(); - foreach (var domain in DomainAll) + foreach (var oneKeyBUildEntity in oneKeyBUildEntities) { - CopyDllHotUpdateAssembly(domain.DomainName, $"{DomainRoot}/{domain.DomainName}/AddressableRes"); - CopyDllStrippedAOTDllOutputRootDir($"{DomainRoot}/{domain.DomainName}/AddressableRes"); + if (oneKeyBUildEntity.isRaw) + { + CopyDllHotUpdateAssembly(oneKeyBUildEntity.DomainName, $"{DomainRoot}/{oneKeyBUildEntity.DomainName}/AddressableRes"); + CopyDllStrippedAOTDllOutputRootDir($"{DomainRoot}/{oneKeyBUildEntity.DomainName}/AddressableRes"); + } } @@ -122,27 +125,29 @@ namespace Stary.Evo.Editor } } - public static void AddMarkAll() + public static void AddMarkAll(List oneKeyBUildEntities) { YooAsset.Editor.AssetBundleCollectorSettingData.ClearAll(); - var DomainAll = CreatAssetWindow.GetCreatDomainAll(); - - foreach (var domain in DomainAll) + foreach (var oneKeyBUildEntity in oneKeyBUildEntities) { - 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"); + if (oneKeyBUildEntity.isRaw) + { + string configPath = + $"Assets/Domain/{oneKeyBUildEntity.DomainName}/Conf/HotfixMainResDomain.asset"; + HotfixMainResDomain hotfixMainResDomain = + AssetDatabase.LoadAssetAtPath(configPath); + packageName = hotfixMainResDomain.hotfixMainResDomainEntity.domain; + Mark(); + if (!oneKeyBUildEntity.DomainName.Equals("Main")) + CreateRes(packageName, + $"{DomainRoot}/{oneKeyBUildEntity.DomainName}/AddressableRes", + $"{DomainRoot}/{oneKeyBUildEntity.DomainName}/HotUpdate"); + else + CreateRes(packageName, + $"{DomainRoot}/{oneKeyBUildEntity.DomainName}/AddressableRes", + $"{MainDomainRoot}/Script/Runtime/HotUpdate"); + + } } } diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 9e1d91e..09ec27b 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.0.29", + "version": "1.0.30", "displayName": "00.StaryEvo", "description": "This is an Framework package", "unity": "2021.3",