此所有实现都是编辑器代码,主要用于我们构建播放器后的一些个性化,差异化,自动化流程的启动时机。
IActiveBuildTargetChanged
当切换建平台后,实现此接口以接收回调信息。
/// <summary>
/// 当平台被切换时接收切换消息
/// </summary>
public partial class ApplicationBuild : IActiveBuildTargetChanged
{
/// <summary>
/// 数值越低越调用越早调用
/// </summary>
public int callbackOrder => 0;
public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget newTarget)
{
Debug.Log($"被切换的目标:{previousTarget},切换到的目标:{newTarget}");
}
}
EditorUserBuildSettings.SwitchActiveBuildTarget()
进行当前的构建平台的切换。IFilterBuildAssemblies
将在生成脚本程序集后调用,可以进行筛选删除不需要的程序集。
/// <summary>
/// 将在生成脚本程序集后调用,可以进行筛选删除不需要的程序集。
/// </summary>
public partial class ApplicationBuild : IFilterBuildAssemblies
{
/// <summary>
/// 数值越低越调用越早调用
/// </summary>
public int callbackOrder => 0;
/// <summary>
/// 将在生成脚本程序集后调用,可以进行筛选删除不需要的程序集。
/// </summary>
/// <param name="buildOptions">构建选项,位掩码</param>
/// <param name="assemblies">当前程序集列表</param>
/// <returns>返回构建中已过滤的程序集列表,不支持增加新程序集。</returns>
public string[] OnFilterAssemblies(BuildOptions buildOptions, string[] assemblies)
{
Debug.Log($"构建选项:{buildOptions}");
//剔除Test.dll程序集
return assemblies.Where(x=>x!= "Library/PlayerScriptAssemblies/Test.dll").ToArray();
}
}
IPostBuildPlayerScriptDLLs
构建完成播放器脚本后立刻回调此接口
/// <summary>
/// 构建播放器脚本后立即回调此接口。
/// </summary>
public partial class ApplicationBuild : IPostBuildPlayerScriptDLLs
{
/// <summary>
/// 数值越低越调用越早调用
/// </summary>
public int callbackOrder => 0;
/// <summary>
/// 构建播放器脚本后立即回调此函数。
/// </summary>
/// <param name="report">构建信息</param>
public void OnPostBuildPlayerScriptDLLs(BuildReport report)
{
Debug.Log($"目标平台:{report.summary.platform},输出位置:{report.summary.outputPath}");
}
}
IFilterBuildAssemblies
接口之后,OnPostprocessBuild
之前。IPostprocessBuildWithReport
构建完播放器后回调此接口
/// <summary>
/// 构建完成后,实现此接口以接收回调。
/// </summary>
public partial class ApplicationBuild : IPostprocessBuildWithReport
{
/// <summary>
/// 数值越低越调用越早调用
/// </summary>
public int callbackOrder => 0;
/// <summary>
/// 构建完成后,实现回调此函数。
/// </summary>
/// <param name="report"></param>
public void OnPostprocessBuild(BuildReport report)
{
Debug.Log($"[OnPostprocessBuild]目标平台:{report.summary.platform},输出位置:{report.summary.outputPath}");
}
}
IPreprocessBuildWithReport
可作为构建播放器的开始,IPostprocessBuildWithReport
可作为构建播放器的结束。IPreprocessBuildWithReport
构建播放器前,实现此接口以接收回调。
/// <summary>
/// 构建完成后,实现此接口以接收回调。
/// </summary>
public partial class ApplicationBuild : IPreprocessBuildWithReport
{
/// <summary>
/// 数值越低越调用越早调用
/// </summary>
public int callbackOrder => 0;
/// <summary>
/// 构建播放器前,回调此函数。
/// </summary>
/// <param name="report">构建信息</param>
public void OnPreprocessBuild(BuildReport report)
{
Debug.Log($"[OnPreprocessBuild]目标平台:{report.summary.platform},输出位置:{report.summary.outputPath}");
}
}
IPreprocessBuildWithReport
可作为构建播放器的开始,IPostprocessBuildWithReport
可作为构建播放器的结束。IProcessSceneWithReport
IPreprocessShaders
IPreprocessComputeShaders
IUnityLinkerProcessor
IPostGenerateGradleAndroidProject
生成 Android Gradle 项目后,实现该接口以接收回调。