应用播放器构建相关回调

此所有实现都是编辑器代码,主要用于我们构建播放器后的一些个性化,差异化,自动化流程的启动时机。

1.目标平台切换接口

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}");
    }
}

Tips

  • 我们可以使用EditorUserBuildSettings.SwitchActiveBuildTarget()进行当前的构建平台的切换。

2.构建时剔除指定程序集

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();
    }
}

Tips

  • BuildOptions 采用位掩码技术,可将多个选项合并到一起。
  • 只能做过滤用不能增加新程序集。如果新增可采用构建完成回调,将文件复制过去。

3.构建完成播放器脚本后回调

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}");
    }
}

Tips

  • IFilterBuildAssemblies接口之后,OnPostprocessBuild之前。

4.构建完成后回调

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}");
    }
}

Tips

  • 在所有相关接口之后回调。
  • IPreprocessBuildWithReport可作为构建播放器的开始,IPostprocessBuildWithReport可作为构建播放器的结束。
  • 通常我们在这里做一些文件导入工作和额外配置工作等,如启动自解压工作,导入第三方插件库,或者批处理等相关工作。

5.构建开始前回调接口

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}");
    }
}

Tips

  • 在所有相关流程接口前。
  • IPreprocessBuildWithReport可作为构建播放器的开始,IPostprocessBuildWithReport可作为构建播放器的结束。

6.每个场景构建期间回调接口

IProcessSceneWithReport

7.编译shader前回调接口

IPreprocessShaders

8.编译ComputeShader前接口回调

IPreprocessComputeShaders

9.与UnityLinker 的运行相关的接口回调

IUnityLinkerProcessor

10.Android 构建完Gradle后的回调

IPostGenerateGradleAndroidProject

生成 Android Gradle 项目后,实现该接口以接收回调。

  • 可对Gradle项目进行差异化处理,如多渠道多平台自动化,前提是你非常熟悉Gradle项目。
  • Android Gradle 项目生成之后且构建开始之前的回调。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值