Files
plugin-library/Assets/00.StaryEvoTools/Editor/BuildAsset/OneKeyBuildWindow.cs
2025-10-31 11:18:23 +08:00

121 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
#if HotUpdate
using HybridCLR.Editor.Commands;
#endif
using Newtonsoft.Json;
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using UnityEditor;
using UnityEngine;
using YooAsset.Editor;
namespace Stary.Evo.Editor
{
public class OneKeyBuildWindow : OdinEditorWindow
{
[MenuItem("Evo/Dev/(一键)打包工具",false, 3)]
static void Init()
{
#if NotUpdate
if (EditorUtility.DisplayDialog("提示", "当前为非热更模式,不支持热更打包功能,是否切换热更模式", "是", "否"))
{
ChangeHotUpdateSchema.SetHotUpdateMode(HotUpdateMode.HotUpdate);
}
#elif HotUpdate
var window = (OneKeyBuildWindow)EditorWindow.GetWindow(typeof(OneKeyBuildWindow));
window.Show();
#endif
}
[Title("全选"), OnValueChanged("OneKeyBuildEvent"), HideLabel]
public bool isOneKeyBuild;
[ListDrawerSettings(DraggableItems = false, ShowFoldout = false, ShowPaging = false, ShowItemCount = false,
HideRemoveButton = true,HideAddButton = true)]
public List<OneKeyBuildEntity> OneKeyBuildEntities = new List<OneKeyBuildEntity>();
protected override void Initialize()
{
base.Initialize();
OneKeyBuildEntities.Clear();
var creatDomainAll = CreatAssetWindow.GetCreatDomainAll();
foreach (var domainEntity in creatDomainAll)
{
OneKeyBuildEntities.Add(new OneKeyBuildEntity()
{
DomainName = domainEntity.DomainName
});
}
}
[Button("(一键)标记选择资源", ButtonSizes.Large)]
public void OneClickMark()
{
#if HotUpdate
AutoBuildPackage.OneClickMark(OneKeyBuildEntities);
EditorUtility.DisplayDialog("提示", $"标记所有资源完成!", "确定");
#endif
}
[Button("(一键)收集shader【材质异常或资源修改】", ButtonSizes.Large)]
public void OneShaderMark()
{
#if HotUpdate
EditorTools.ClearUnityConsole();
AutoBuildPackage.OneShaderMark(OneKeyBuildEntities);
EditorUtility.DisplayDialog("提示", $"标记所有shader完成", "确定");
#endif
}
[Button("(一键)获取服务器版本", ButtonSizes.Large)]
public async void OneUpdatePackageVersion()
{
//打包
EditorTools.ClearUnityConsole();
AutoBuildPackage.OneUpdatePackageVersion(OneKeyBuildEntities);
EditorUtility.DisplayDialog("提示", $"获取服务器版本完成", "确定");
}
[Button("(一键)打包选择资源", ButtonSizes.Large)]
public void OneClickBuild()
{
//打包
EditorTools.ClearUnityConsole();
AutoBuildPackage.OneClickBuild(OneKeyBuildEntities);
EditorUtility.DisplayDialog("提示", $"开始打包资源!", "确定");
}
[Button("(一键)上传服务器版本", ButtonSizes.Large)]
public async void OneUpdatePackage()
{
//打包
EditorTools.ClearUnityConsole();
AutoBuildPackage.OneUpdatePackage(OneKeyBuildEntities);
EditorUtility.DisplayDialog("提示", $"服务器上传完成", "确定");
}
private void OneKeyBuildEvent()
{
for (int i = 0; i < OneKeyBuildEntities.Count; i++)
{
OneKeyBuildEntities[i].isRaw = isOneKeyBuild;
}
}
}
[Serializable]
public class OneKeyBuildEntity
{
[Title("是否打包", titleAlignment: TitleAlignments.Centered)] [HideLabel, HorizontalGroup("OneKeyBUildEntity")]
public bool isRaw;
[Title("包名", titleAlignment: TitleAlignments.Centered)]
[HideLabel, ReadOnly, HorizontalGroup("OneKeyBUildEntity")]
public string DomainName;
}
}