From 0a3bfa23a80b0d31b08d09d3e48d30cb75964559 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 01 六月 2026 18:37:49 +0800
Subject: [PATCH] 打包修改
---
Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs | 177 +++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 131 insertions(+), 46 deletions(-)
diff --git a/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs b/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
index 7c0c862..4869c12 100644
--- a/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
+++ b/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
@@ -16,6 +16,7 @@
using HybridCLR.Editor;
using System.Text;
using Cysharp.Threading.Tasks;
+using YooAsset.Editor;
namespace UnityEngine.AssetBundles
{
@@ -382,43 +383,7 @@
EditorApplication.delayCall += ExecuteBuildAll;
}
- EditorGUILayout.BeginHorizontal();
-
- if (GUILayout.Button("Prefab"))
- {
- EditorApplication.delayCall += ExcuteBuildConfig;
- }
-
- if (GUILayout.Button("UI+UIEffect"))
- {
- EditorApplication.delayCall += ExcuteBuildUI;
- }
-
- if (GUILayout.Button("Builtin"))
- {
- EditorApplication.delayCall += ExcuteBuildBuiltIn;
- }
-
- if (GUILayout.Button("Audio"))
- {
- EditorApplication.delayCall += ExcuteBuildAudio;
- }
-
- if (GUILayout.Button("Video"))
- {
- EditorApplication.delayCall += ExcuteBuildVideo;
- }
-
- if (GUILayout.Button("Battle"))
- {
- EditorApplication.delayCall += ExcuteBuildMobEffectShader;
- }
-
- if (GUILayout.Button("Dll(HybridCLR)"))
- {
- EditorApplication.delayCall += ExcuteBuildHybridclrUpdate;
- }
- EditorGUILayout.EndHorizontal();
+ DrawYooAssetPackageButtons();
EditorGUILayout.Space();
if (GUILayout.Button("瀵煎嚭鍒� LocalCDN (D:\\LocalCDN)"))
@@ -492,8 +457,8 @@
EditorGUILayout.Space();
GUILayout.BeginHorizontal();
- ClientPackage.includeConfig = EditorGUILayout.Toggle("Include Config ", ClientPackage.includeConfig, GUILayout.Width(250));
- ClientPackage.includeUI = EditorGUILayout.Toggle("Include UI ", ClientPackage.includeUI, GUILayout.Width(250));
+ ClientPackage.includeConfig = EditorGUILayout.Toggle("Include Config Package", ClientPackage.includeConfig, GUILayout.Width(250));
+ ClientPackage.includeUI = EditorGUILayout.Toggle("Include UI Base Packages", ClientPackage.includeUI, GUILayout.Width(250));
GUILayout.EndHorizontal();
EditorGUILayout.Space();
@@ -617,6 +582,119 @@
YooAssetBuildTool.CopyBuildOutputToLocalCDNFlat();
}
+ private static readonly string[] YooAssetPackageButtonOrder =
+ {
+ "Builtin",
+ "Dll",
+ "Config",
+ "Shader",
+ "Materials",
+ "ScriptableObject",
+ "Scenes",
+ "Audio",
+ "Battle",
+ "Hero",
+ "UI",
+ "UIEffect",
+ "Video",
+ };
+
+ private void DrawYooAssetPackageButtons()
+ {
+ var packageNames = GetYooAssetPackageNames();
+ if (packageNames.Count == 0)
+ {
+ EditorGUILayout.HelpBox("AssetBundleCollectorSetting 涓病鏈夐厤缃� YooAsset Package銆�", MessageType.Warning);
+ return;
+ }
+
+ EditorGUILayout.LabelField("Build Single Package", EditorStyles.boldLabel);
+ int columns = Mathf.Max(1, Mathf.FloorToInt((EditorGUIUtility.currentViewWidth - 30f) / 155f));
+ for (int i = 0; i < packageNames.Count; i++)
+ {
+ if (i % columns == 0)
+ EditorGUILayout.BeginHorizontal();
+
+ string packageName = packageNames[i];
+ if (GUILayout.Button(GetYooAssetPackageButtonLabel(packageName)))
+ {
+ string capturedPackageName = packageName;
+ EditorApplication.delayCall += () => ExecuteBuildYooAssetPackage(capturedPackageName);
+ }
+
+ if (i % columns == columns - 1 || i == packageNames.Count - 1)
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+
+ private List<string> GetYooAssetPackageNames()
+ {
+ var result = new List<string>();
+ var setting = AssetBundleCollectorSettingData.Setting;
+ if (setting == null || setting.Packages == null)
+ return result;
+
+ foreach (var packageName in YooAssetPackageButtonOrder)
+ {
+ if (HasYooAssetPackage(setting, packageName))
+ result.Add(packageName);
+ }
+
+ foreach (var package in setting.Packages)
+ {
+ if (package == null || string.IsNullOrEmpty(package.PackageName))
+ continue;
+
+ if (!ContainsPackageName(result, package.PackageName))
+ result.Add(package.PackageName);
+ }
+
+ return result;
+ }
+
+ private static bool HasYooAssetPackage(AssetBundleCollectorSetting setting, string packageName)
+ {
+ foreach (var package in setting.Packages)
+ {
+ if (package != null && string.Equals(package.PackageName, packageName, StringComparison.OrdinalIgnoreCase))
+ return true;
+ }
+
+ return false;
+ }
+
+ private static bool ContainsPackageName(List<string> packageNames, string packageName)
+ {
+ foreach (var item in packageNames)
+ {
+ if (string.Equals(item, packageName, StringComparison.OrdinalIgnoreCase))
+ return true;
+ }
+
+ return false;
+ }
+
+ private static string GetYooAssetPackageButtonLabel(string packageName)
+ {
+ return string.Equals(packageName, "Dll", StringComparison.OrdinalIgnoreCase) ? "Dll(HybridCLR)" : packageName;
+ }
+
+ private void ExecuteBuildYooAssetPackage(string packageName)
+ {
+ if (string.Equals(packageName, "Builtin", StringComparison.OrdinalIgnoreCase))
+ {
+ ExcuteBuildBuiltIn();
+ }
+ else if (string.Equals(packageName, "Dll", StringComparison.OrdinalIgnoreCase))
+ {
+ ExcuteBuildHybridclrUpdate();
+ }
+ else
+ {
+ ExcuteBuildAsset(packageName);
+ }
+ }
+
private void ExcuteBuildAsset(string yooPackageName)
{
string version = YooAssetBuildTool.GenerateVersion();
@@ -626,8 +704,11 @@
if (ok)
{
- YooAssetBuildTool.CopyStartupConfigsToStreamingAssets();
- Debug.Log($"[AssetBundleBuildTab] Package '{yooPackageName}' 鎵撳寘鎴愬姛锛�");
+ bool copied = YooAssetBuildTool.CopySinglePackageBuildOutput(yooPackageName, m_UserData.m_OutputPath, version);
+ if (copied)
+ Debug.Log($"[AssetBundleBuildTab] Package '{yooPackageName}' 鎵撳寘骞舵嫹璐濇垚鍔燂紒");
+ else
+ Debug.LogError($"[AssetBundleBuildTab] Package '{yooPackageName}' 鎵撳寘鎴愬姛锛屼絾鎷疯礉鍒� StreamingAssets/澶栭儴璧勬簮鐩綍澶辫触锛�");
}
else
{
@@ -662,7 +743,7 @@
private void ExcuteBuildConfig()
{
- ExcuteBuildAsset("Prefab");
+ ExcuteBuildAsset("Config");
}
//鍙戝寘鏃惰幏鍙栫儹鏇磀ll鍜岃鍓狝OT
@@ -700,8 +781,14 @@
return;
}
+ if (!YooAssetBuildTool.CopySinglePackageBuildOutput("Dll", m_UserData.m_OutputPath, version))
+ {
+ Debug.LogError("[AssetBundleBuildTab] Dll Package 鎵撳寘鎴愬姛锛屼絾鎷疯礉鍒� StreamingAssets/澶栭儴璧勬簮鐩綍澶辫触锛�");
+ return;
+ }
+
AssetDatabase.Refresh();
- Debug.Log("[AssetBundleBuildTab] 鐑洿鏂� DLL 澧為噺鎵撳寘瀹屾垚銆�");
+ Debug.Log("[AssetBundleBuildTab] 鐑洿鏂� DLL 澧為噺鎵撳寘骞舵嫹璐濆畬鎴愩��");
}
@@ -870,13 +957,11 @@
private void ExcuteBuildLevels()
{
- // Scenes 鍦� YooAsset 鐨� Prefab Package 涓�
- ExcuteBuildAsset("Prefab");
+ ExcuteBuildAsset("Scenes");
}
private void ExcuteBuildUI()
{
- // UI 鍜� UIEffect 鏄袱涓嫭绔� Package
ExcuteBuildAsset("UI");
ExcuteBuildAsset("UIEffect");
}
--
Gitblit v1.8.0