【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;
[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/资源打包工具")]
static void ShowWindows()

View File

@@ -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();
}

View File

@@ -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;

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 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();
}
}

View File

@@ -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();
}
}

View File

@@ -58,14 +58,17 @@ namespace Stary.Evo.Editor
//EditorUtility.DisplayDialog("自动标记", "自动Hotfix成功", "确定");
}
public static void AddHotfixAddressableDllAll()
public static void AddHotfixAddressableDllAll(List<OneKeyBUildEntity> 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<OneKeyBUildEntity> 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<HotfixMainResDomain>(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<HotfixMainResDomain>(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");
}
}
}

View File

@@ -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",