【m】新增一个打包面板

This commit is contained in:
2025-05-07 10:50:44 +08:00
parent 4688a5c52b
commit da2c415e4f
9 changed files with 141 additions and 73 deletions

View File

@@ -28,50 +28,7 @@ namespace Stary.Evo.Editor
{ {
private static BuildAssetWindow window; 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<BuildAssetDataSetting>(
$"{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/资源打包工具")] [MenuItem("Evo/资源打包工具")]
static void ShowWindows() static void ShowWindows()

View File

@@ -1,5 +1,6 @@
using System; using System;
using UnityEditor; using UnityEditor;
using UnityEngine;
using YooAsset; using YooAsset;
using YooAsset.Editor; using YooAsset.Editor;
@@ -44,7 +45,8 @@ namespace Stary.Evo.Editor
var buildResult = pipeline.Run(buildParameters, true); var buildResult = pipeline.Run(buildParameters, true);
if (buildResult.Success) if (buildResult.Success)
{ {
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); Debug.Log($"Build Success! 【{buildResult.OutputPackageDirectory}】");
//EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
base.ExecuteBuild(); base.ExecuteBuild();
} }

View File

@@ -2,13 +2,10 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using EditorFramework;
using HybridCLR.Editor; using HybridCLR.Editor;
using HybridCLR.Editor.Settings; using HybridCLR.Editor.Settings;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor; using Sirenix.OdinInspector.Editor;
using Sirenix.Utilities;
using Stary.Evo.InformationSave; using Stary.Evo.InformationSave;
using UnityEditor; using UnityEditor;
using UnityEditorInternal; using UnityEditorInternal;

View File

@@ -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<OneKeyBUildEntity> OneKeyBUildEntities = new List<OneKeyBUildEntity>();
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<BuildAssetDataSetting>(
$"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;
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 26f920eb9cb048179fdc641cfd92ed93
timeCreated: 1746583992

View File

@@ -1,5 +1,6 @@
using System; using System;
using UnityEditor; using UnityEditor;
using UnityEngine;
using YooAsset; using YooAsset;
using YooAsset.Editor; using YooAsset.Editor;
@@ -43,7 +44,8 @@ namespace Stary.Evo.Editor
var buildResult = pipeline.Run(buildParameters, true); var buildResult = pipeline.Run(buildParameters, true);
if (buildResult.Success) if (buildResult.Success)
{ {
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); Debug.Log($"Build Success! 【{buildResult.OutputPackageDirectory}】");
// EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
base.ExecuteBuild(); base.ExecuteBuild();
} }
} }

View File

@@ -1,5 +1,6 @@
using System; using System;
using UnityEditor; using UnityEditor;
using UnityEngine;
using YooAsset; using YooAsset;
using YooAsset.Editor; using YooAsset.Editor;
@@ -46,7 +47,8 @@ namespace Stary.Evo.Editor
var buildResult = pipeline.Run(buildParameters, true); var buildResult = pipeline.Run(buildParameters, true);
if (buildResult.Success) if (buildResult.Success)
{ {
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); Debug.Log($"Build Success! 【{buildResult.OutputPackageDirectory}】");
// EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
base.ExecuteBuild(); base.ExecuteBuild();
} }
} }

View File

@@ -58,14 +58,17 @@ namespace Stary.Evo.Editor
//EditorUtility.DisplayDialog("自动标记", "自动Hotfix成功", "确定"); //EditorUtility.DisplayDialog("自动标记", "自动Hotfix成功", "确定");
} }
public static void AddHotfixAddressableDllAll() public static void AddHotfixAddressableDllAll(List<OneKeyBUildEntity> oneKeyBUildEntities)
{ {
var DomainAll = CreatAssetWindow.GetCreatDomainAll(); var DomainAll = CreatAssetWindow.GetCreatDomainAll();
foreach (var domain in DomainAll) foreach (var oneKeyBUildEntity in oneKeyBUildEntities)
{ {
CopyDllHotUpdateAssembly(domain.DomainName, $"{DomainRoot}/{domain.DomainName}/AddressableRes"); if (oneKeyBUildEntity.isRaw)
CopyDllStrippedAOTDllOutputRootDir($"{DomainRoot}/{domain.DomainName}/AddressableRes"); {
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<OneKeyBUildEntity> oneKeyBUildEntities)
{ {
YooAsset.Editor.AssetBundleCollectorSettingData.ClearAll(); YooAsset.Editor.AssetBundleCollectorSettingData.ClearAll();
var DomainAll = CreatAssetWindow.GetCreatDomainAll(); foreach (var oneKeyBUildEntity in oneKeyBUildEntities)
foreach (var domain in DomainAll)
{ {
string configPath = if (oneKeyBUildEntity.isRaw)
$"Assets/Domain/{domain.DomainName}/Conf/HotfixMainResDomain.asset"; {
HotfixMainResDomain hotfixMainResDomain = string configPath =
AssetDatabase.LoadAssetAtPath<HotfixMainResDomain>(configPath); $"Assets/Domain/{oneKeyBUildEntity.DomainName}/Conf/HotfixMainResDomain.asset";
packageName = hotfixMainResDomain.hotfixMainResDomainEntity.domain; HotfixMainResDomain hotfixMainResDomain =
Mark(); AssetDatabase.LoadAssetAtPath<HotfixMainResDomain>(configPath);
if (! domain.DomainName.Equals("Main")) packageName = hotfixMainResDomain.hotfixMainResDomainEntity.domain;
CreateRes(packageName, Mark();
$"{DomainRoot}/{domain.DomainName}/AddressableRes", if (!oneKeyBUildEntity.DomainName.Equals("Main"))
$"{DomainRoot}/{domain.DomainName}/HotUpdate"); CreateRes(packageName,
else $"{DomainRoot}/{oneKeyBUildEntity.DomainName}/AddressableRes",
CreateRes(packageName, $"{DomainRoot}/{oneKeyBUildEntity.DomainName}/HotUpdate");
$"{DomainRoot}/{domain.DomainName}/AddressableRes", else
$"{MainDomainRoot}/Script/Runtime/HotUpdate"); CreateRes(packageName,
$"{DomainRoot}/{oneKeyBUildEntity.DomainName}/AddressableRes",
$"{MainDomainRoot}/Script/Runtime/HotUpdate");
}
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "com.staryevo.main", "name": "com.staryevo.main",
"version": "1.0.29", "version": "1.0.30",
"displayName": "00.StaryEvo", "displayName": "00.StaryEvo",
"description": "This is an Framework package", "description": "This is an Framework package",
"unity": "2021.3", "unity": "2021.3",