• 应用播放器构建相关回调


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

    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}");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    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}");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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}");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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}");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    Tips

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

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

    IProcessSceneWithReport

    7.编译shader前回调接口

    IPreprocessShaders

    8.编译ComputeShader前接口回调

    IPreprocessComputeShaders

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

    IUnityLinkerProcessor

    10.Android 构建完Gradle后的回调

    IPostGenerateGradleAndroidProject

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

    • 可对Gradle项目进行差异化处理,如多渠道多平台自动化,前提是你非常熟悉Gradle项目。
    • Android Gradle 项目生成之后且构建开始之前的回调。
  • 相关阅读:
    数仓4.0(三)------数据仓库系统(续)
    封装简单版消息提示组件
    Hugging News #0904: 登陆 AWS Marketplace
    6、Mybatis-Plus wrapper的使用
    k8s驱逐篇(6)-kube-controller-manager驱逐-NodeLifecycleController源码分析
    设计模式胡咧咧之策略工厂实现导入导出
    [Java代码审计]—文件上传漏洞
    如何在SAP S4 从 0 到 1配置 一家公司 PART1 (通用配置及基础架构篇)
    Spring Cloud Gateway集成Swagger实现微服务接口文档统一管理及登录访问
    【云原生】portainer管理多个独立docker服务器
  • 原文地址:https://blog.csdn.net/l100142548/article/details/125424749