This commit is contained in:
zhangzheng
2026-03-25 12:08:25 +08:00
parent ef075a0411
commit 561672ad69
3 changed files with 72 additions and 29 deletions

View File

@@ -24,6 +24,8 @@ namespace Stary.Evo.Editor
private bool _isBuilding; private bool _isBuilding;
private UnityEditor.Build.Reporting.BuildReport _lastBuildReport; private UnityEditor.Build.Reporting.BuildReport _lastBuildReport;
private string[] _scenePaths; private string[] _scenePaths;
private string _buildAssetTagName;
private string buildAPKTagName;
[Title("设备类型选择", titleAlignment: TitleAlignments.Centered)] [EnumToggleButtons, HideLabel] [Title("设备类型选择", titleAlignment: TitleAlignments.Centered)] [EnumToggleButtons, HideLabel]
public DeviceType deviceType = DeviceType.Xreal; public DeviceType deviceType = DeviceType.Xreal;
@@ -34,12 +36,14 @@ namespace Stary.Evo.Editor
[OnValueChanged("OnPackageNameChanged")] [OnValueChanged("OnPackageNameChanged")]
public string selectedPackageName; public string selectedPackageName;
[Title("打包配置", titleAlignment: TitleAlignments.Centered)] [ToggleLeft] [LabelText("自动递增版本号")] [TitleGroup("打包配置", alignment: TitleAlignments.Centered)] [ToggleLeft] [LabelText("自动递增版本号")]
public bool autoIncrementVersion = true; public bool autoIncrementVersion = true;
[Title("打包配置", titleAlignment: TitleAlignments.Centered)] [ToggleLeft] [LabelText("是否添加水印")] [TitleGroup("打包配置", alignment: TitleAlignments.Centered)] [ToggleLeft] [LabelText("是否添加水印")]
public bool isWatermark = false; public bool isWatermark = false;
[TitleGroup("打包配置", alignment: TitleAlignments.Centered)] [ToggleLeft] [LabelText("是否服务器热更包")]
[OnValueChanged("OnServerChangedTag")]
public bool isServer = false;
[ToggleLeft] [LabelText("构建完成后打开文件夹")] public bool openFolderOnComplete = true; [ToggleLeft] [LabelText("构建完成后打开文件夹")] public bool openFolderOnComplete = true;
[BoxGroup("缓存管理", centerLabel: true)] [BoxGroup("缓存管理", centerLabel: true)]
@@ -48,24 +52,38 @@ namespace Stary.Evo.Editor
{ {
ClearCache(); ClearCache();
} }
[Button("$GetBuildTargetName", ButtonSizes.Large)]
private void ResourceManagement()
{
if (!isServer)
{
StreamingAssetsFilter.OnPostprocessBuild();
StreamingAssetsFilter.KeepFiles = new[]
{
$"{YooAssetSettingsData.GetDefaultYooFolderName()}/Main",
$"{YooAssetSettingsData.GetDefaultYooFolderName()}/{selectedPackageName}"
};
StreamingAssetsFilter.OnPreprocessBuild();
}
else
{
StreamingAssetsFilter.KeepFiles=new string[0];
StreamingAssetsFilter.OnPreprocessBuild();
}
}
[ButtonGroup] [ButtonGroup]
[Button("本地普通包", ButtonSizes.Large, ButtonStyle.FoldoutButton)] [Button("$GetBuildAPKName", ButtonSizes.Large, ButtonStyle.FoldoutButton)]
private void BuildNormalPackage() private void BuildNormalPackage()
{ {
if (!isServer)
StreamingAssetsFilter.KeepFiles = new[]
{ {
$"{YooAssetSettingsData.GetDefaultYooFolderName()}/Main",
$"{YooAssetSettingsData.GetDefaultYooFolderName()}/{selectedPackageName}" StartBuild(PLayerMode.LOCAL_PLAYMODE);
}; }
StartBuild(PLayerMode.LOCAL_PLAYMODE); else
} {
StartBuild(PLayerMode.HOST_PLAYMODE);
[Button("服务器热更包", ButtonSizes.Large, ButtonStyle.FoldoutButton)] }
private void BuildServerPackage()
{
StartBuild(PLayerMode.HOST_PLAYMODE);
} }
[Title("打包状态", titleAlignment: TitleAlignments.Centered)] [ReadOnly] [LabelText("当前状态")] [Title("打包状态", titleAlignment: TitleAlignments.Centered)] [ReadOnly] [LabelText("当前状态")]
@@ -643,6 +661,19 @@ namespace Stary.Evo.Editor
} }
} }
private void OnServerChangedTag()
{
}
private string GetBuildTargetName()
{
return isServer ? "清空所有资源" : "拷贝打包资源";
}
private string GetBuildAPKName()
{
return isServer ? "打包服务器热更包" : "打包本地运行包";
}
#endregion #endregion
#region #region

View File

@@ -4,18 +4,18 @@ using UnityEditor.Build;
using UnityEditor.Build.Reporting; using UnityEditor.Build.Reporting;
using UnityEngine; using UnityEngine;
public class StreamingAssetsFilter : IPreprocessBuildWithReport, IPostprocessBuildWithReport public static class StreamingAssetsFilter
{ {
// 需要保留的文件/文件夹(相对于 StreamingAssets 的路径) // 需要保留的文件/文件夹(相对于 StreamingAssets 的路径)
public static string[] KeepFiles; public static string[] KeepFiles;
private string streamingAssetsPath; private static string streamingAssetsPath;
private string tempBackupPath; private static string tempBackupPath;
public int callbackOrder => 0; // 执行优先级 public static int callbackOrder => 0; // 执行优先级
// 要删除的文件后缀列表
public void OnPreprocessBuild(BuildReport report) private const string extensionsToDelete = ".meta";
public static void OnPreprocessBuild()
{ {
if (report.summary.platform != BuildTarget.Android) return;
streamingAssetsPath = Application.dataPath + "/StreamingAssets"; streamingAssetsPath = Application.dataPath + "/StreamingAssets";
tempBackupPath = Application.dataPath + "/../Temp/StreamingAssets_Backup"; tempBackupPath = Application.dataPath + "/../Temp/StreamingAssets_Backup";
@@ -30,6 +30,11 @@ public class StreamingAssetsFilter : IPreprocessBuildWithReport, IPostprocessBui
foreach (var file in allFiles) foreach (var file in allFiles)
{ {
if (file.Contains( extensionsToDelete, System.StringComparison.OrdinalIgnoreCase))
{
continue;
}
string relativePath = file.Replace(streamingAssetsPath + Path.DirectorySeparatorChar, "") string relativePath = file.Replace(streamingAssetsPath + Path.DirectorySeparatorChar, "")
.Replace(streamingAssetsPath, ""); .Replace(streamingAssetsPath, "");
@@ -44,11 +49,11 @@ public class StreamingAssetsFilter : IPreprocessBuildWithReport, IPostprocessBui
} }
Debug.Log($"[StreamingAssetsFilter] 已过滤,保留 {KeepFiles.Length} 项,其余已移至临时目录"); Debug.Log($"[StreamingAssetsFilter] 已过滤,保留 {KeepFiles.Length} 项,其余已移至临时目录");
AssetDatabase.Refresh();
} }
public void OnPostprocessBuild(BuildReport report) public static void OnPostprocessBuild()
{ {
if (report.summary.platform != BuildTarget.Android) return;
if (!Directory.Exists(tempBackupPath)) return; if (!Directory.Exists(tempBackupPath)) return;
@@ -57,6 +62,13 @@ public class StreamingAssetsFilter : IPreprocessBuildWithReport, IPostprocessBui
foreach (var file in backupFiles) foreach (var file in backupFiles)
{ {
if (file.Contains( extensionsToDelete, System.StringComparison.OrdinalIgnoreCase))
{
Debug.Log($"删除文件: {file}");
File.Delete(file);
continue;
}
string relativePath = file.Replace(tempBackupPath + Path.DirectorySeparatorChar, "") string relativePath = file.Replace(tempBackupPath + Path.DirectorySeparatorChar, "")
.Replace(tempBackupPath, ""); .Replace(tempBackupPath, "");
string originalPath = Path.Combine(streamingAssetsPath, relativePath); string originalPath = Path.Combine(streamingAssetsPath, relativePath);
@@ -71,10 +83,10 @@ public class StreamingAssetsFilter : IPreprocessBuildWithReport, IPostprocessBui
Debug.Log("[StreamingAssetsFilter] 已恢复所有文件到 StreamingAssets"); Debug.Log("[StreamingAssetsFilter] 已恢复所有文件到 StreamingAssets");
} }
private bool ShouldKeep(string relativePath) private static bool ShouldKeep(string relativePath)
{ {
string normalizedPath = relativePath.Replace('\\', '/'); string normalizedPath = relativePath.Replace('\\', '/');
if(KeepFiles==null||KeepFiles.Length==0) return false;
foreach (var keep in KeepFiles) foreach (var keep in KeepFiles)
{ {
string normalizedKeep = keep.Replace('\\', '/'); string normalizedKeep = keep.Replace('\\', '/');

View File

@@ -1,6 +1,6 @@
{ {
"name": "com.staryevo.tools", "name": "com.staryevo.tools",
"version": "1.3.24", "version": "1.3.25",
"displayName": "00.StaryEvo.Tools", "displayName": "00.StaryEvo.Tools",
"description": "This is an Framework package(后台服务器版本端口9527)", "description": "This is an Framework package(后台服务器版本端口9527)",
"unity": "2021.3", "unity": "2021.3",