与编辑器同步,增加sync优化bloom,添加打包时自动打包主题包的特性
(怎么这么多meta文件啊) Signed-off-by: TRADER_FOER <lhf190@outlook.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user