与编辑器同步,增加sync优化bloom,添加打包时自动打包主题包的特性

(怎么这么多meta文件啊)

Signed-off-by: TRADER_FOER <lhf190@outlook.com>
This commit is contained in:
2026-07-23 14:52:15 +08:00
parent 02ee7fc72e
commit 9e5471b4c4
104 changed files with 670 additions and 2523 deletions

View File

@@ -5,6 +5,8 @@ using System.IO;
using System.Linq;
using Ichni;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;
/// <summary>
@@ -44,35 +46,74 @@ public class BuildAssetBundle
}
}
public static void BuildForTarget(BuildTarget target)
{
string platformDirectory = GetPlatformDirectory(target);
if (string.IsNullOrEmpty(platformDirectory))
{
Debug.LogWarning($"Skip AssetBundle build for unsupported build target: {target}");
return;
}
string uri = Path.Combine(BuildPrepare(), platformDirectory);
if (Directory.Exists(uri) == false)
{
Directory.CreateDirectory(uri);
}
AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, target);
if (manifest == null)
{
throw new BuildFailedException($"AssetBundle build failed for target: {target}");
}
GenerateAbstracts(manifest);
}
private static string GetPlatformDirectory(BuildTarget target)
{
return target switch
{
BuildTarget.StandaloneWindows => "Windows64",
BuildTarget.StandaloneWindows64 => "Windows64",
BuildTarget.StandaloneOSX => "OSX",
BuildTarget.Android => "Android",
BuildTarget.iOS => "IOS",
_ => string.Empty
};
}
[MenuItem("AssetBundleTools/BuildToWindows64")]
public static void BuildToWindows64()
{
string uri = BuildPrepare() + "/Windows64";
AssetBundleManifest manifestWin64 = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
GenerateAbstracts(manifestWin64);
BuildForTarget(BuildTarget.StandaloneWindows64);
}
[MenuItem("AssetBundleTools/BuildToOSX")]
public static void BuildToOSX()
{
string uri = BuildPrepare() + "/OSX";
AssetBundleManifest manifestOSX = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSX);
GenerateAbstracts(manifestOSX);
BuildForTarget(BuildTarget.StandaloneOSX);
}
[MenuItem("AssetBundleTools/BuildToAndroid")]
public static void BuildToAndroid()
{
string uri = BuildPrepare() + "/Android";
AssetBundleManifest manifestAndroid = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.Android);
GenerateAbstracts(manifestAndroid);
BuildForTarget(BuildTarget.Android);
}
[MenuItem("AssetBundleTools/BuildToIOS")]
public static void BuildToIOS()
{
string uri = BuildPrepare() + "/IOS";
AssetBundleManifest manifestIOS = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.iOS);
GenerateAbstracts(manifestIOS);
BuildForTarget(BuildTarget.iOS);
}
}
}
public class AssetBundleBuildPreprocessor : IPreprocessBuildWithReport
{
public int callbackOrder => 0;
public void OnPreprocessBuild(BuildReport report)
{
Debug.Log($"Rebuild AssetBundles before player build: {report.summary.platform}");
BuildAssetBundle.BuildForTarget(report.summary.platform);
}
}