94 lines
4.4 KiB
C#
94 lines
4.4 KiB
C#
|
|
using UnityEditor;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using YooAsset.Editor;
|
|||
|
|
using YooAsset;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEditor.Build.Pipeline;
|
|||
|
|
|
|||
|
|
public class BuildTool
|
|||
|
|
{
|
|||
|
|
[MenuItem("Tools/<2F><><EFBFBD><EFBFBD>Preload")]
|
|||
|
|
public static void BuildPreload()
|
|||
|
|
{
|
|||
|
|
CopyHotDll.CopyPreloadDll2Byte();
|
|||
|
|
ExecuteBuild("Preload",EBuildPipeline.ScriptableBuildPipeline, EditorUserBuildSettings.activeBuildTarget,EFileNameStyle.BundleName_HashName,EBuildinFileCopyOption.ClearAndCopyAll);
|
|||
|
|
Debug.Log($"<22><><EFBFBD><EFBFBD>Preload<61><64><EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
[MenuItem("Tools/<2F><><EFBFBD><EFBFBD>Main %G")]
|
|||
|
|
public static void BuildMain()
|
|||
|
|
{
|
|||
|
|
CopyHotDll.CopyMainDll2Byte();
|
|||
|
|
ExecuteBuild("Main", EBuildPipeline.ScriptableBuildPipeline, EditorUserBuildSettings.activeBuildTarget, EFileNameStyle.BundleName_HashName, EBuildinFileCopyOption.None);
|
|||
|
|
Debug.Log($"<22><><EFBFBD><EFBFBD>Main<69><6E><EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
[MenuItem("Tools/ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")]
|
|||
|
|
public static void BuildAll()
|
|||
|
|
{
|
|||
|
|
BuildPreload();
|
|||
|
|
BuildMain();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static void ExecuteBuild(string PackageName, EBuildPipeline BuildPipeline, BuildTarget BuildTarget, EFileNameStyle fileNameStyle, EBuildinFileCopyOption buildinFileCopyOption)
|
|||
|
|
{
|
|||
|
|
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline);
|
|||
|
|
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline);
|
|||
|
|
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline);
|
|||
|
|
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline);
|
|||
|
|
var builtinShaderBundleName = GetBuiltinShaderBundleName(PackageName);
|
|||
|
|
|
|||
|
|
ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
|
|||
|
|
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
|
|||
|
|
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
|
|||
|
|
buildParameters.BuildPipeline = BuildPipeline.ToString();
|
|||
|
|
buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
|
|||
|
|
buildParameters.BuildTarget = BuildTarget;
|
|||
|
|
buildParameters.PackageName = PackageName;
|
|||
|
|
buildParameters.PackageVersion = GetPackageVersion();
|
|||
|
|
buildParameters.EnableSharePackRule = true;
|
|||
|
|
buildParameters.VerifyBuildingResult = true;
|
|||
|
|
buildParameters.FileNameStyle = fileNameStyle;
|
|||
|
|
buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
|
|||
|
|
buildParameters.BuildinFileCopyParams = buildinFileCopyParams;
|
|||
|
|
buildParameters.CompressOption = compressOption;
|
|||
|
|
buildParameters.ClearBuildCacheFiles = clearBuildCache;
|
|||
|
|
buildParameters.UseAssetDependencyDB = useAssetDependencyDB;
|
|||
|
|
buildParameters.BuiltinShadersBundleName = builtinShaderBundleName;
|
|||
|
|
buildParameters.EncryptionServices = CreateEncryptionInstance(PackageName, BuildPipeline);
|
|||
|
|
|
|||
|
|
ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline();
|
|||
|
|
var buildResult = pipeline.Run(buildParameters, true);
|
|||
|
|
if (buildResult.Success)
|
|||
|
|
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static string GetPackageVersion()
|
|||
|
|
{
|
|||
|
|
int totalMinutes = DateTime.Now.Hour * 60 + DateTime.Now.Minute;
|
|||
|
|
return DateTime.Now.ToString("yyyy-MM-dd") + "-" + totalMinutes;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// ע<>⣺<EFBFBD><E2A3BA><EFBFBD>Զ<EFBFBD><D4B6>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public static string GetBuiltinShaderBundleName(string PackageName)
|
|||
|
|
{
|
|||
|
|
var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName;
|
|||
|
|
var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult();
|
|||
|
|
return packRuleResult.GetBundleName(PackageName, uniqueBundleName);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static IEncryptionServices CreateEncryptionInstance(string PackageName, EBuildPipeline BuildPipeline)
|
|||
|
|
{
|
|||
|
|
var encyptionClassName = AssetBundleBuilderSetting.GetPackageEncyptionClassName(PackageName, BuildPipeline);
|
|||
|
|
var encryptionClassTypes = EditorTools.GetAssignableTypes(typeof(IEncryptionServices));
|
|||
|
|
var classType = encryptionClassTypes.Find(x => x.FullName.Equals(encyptionClassName));
|
|||
|
|
if (classType != null)
|
|||
|
|
return (IEncryptionServices)Activator.CreateInstance(classType);
|
|||
|
|
else
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|