UEDL15——CompilationPipeline公共类

本章代码关键字

1
2
3
CompilationPipeline                                    //用于处理代码编译相关的操作和事件的公共类
CompilationPipeline.assemblyCompilationFinished //当一个程序集编译结束会主动调用该回调函数
CompilationPipeline.compilationFinished //当所有程序集编译结束会主动调用该回调函数

CompilationPipeline公共类

它是 Unity 编辑器中的一个公共类,用于处理代码编译相关的操作和事件的
对于我们来说,我们最常用的是利用它得知代码是否编译结束,比如动态生成脚本时,我们需要在编译结束后才能使用新的脚本

关于CompilationPipeline​的更多内容:

常用API

  1. CompilationPipeline.assemblyCompilationFinished
    命名空间:UnityEditor.Compilation;
    主要作用:当一个程序集编译结束会主动调用该回调函数
    传入的两个参数分别是:

    • string arg1​:编译完成的程序集名
    • CompilerMessage[] arg2​:编译完成后产生的编译消息数组,包括编译警告和错误信息
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    private void OnEnable()
    {
    CompilationPipeline.assemblyCompilationFinished += CompilationPipeline_assemblyCompilationFinished;
    }

    private void OnDestroy()
    {
    CompilationPipeline.assemblyCompilationFinished -= CompilationPipeline_assemblyCompilationFinished;
    }

    private void CompilationPipeline_assemblyCompilationFinished(string arg1, CompilerMessage[] arg2)
    {
    Debug.Log($"程序集名:{arg1}");
    for (int i = 0; i < arg2.Length; i++)
    {
    Debug.Log(arg2[i]);
    }
    }

    当编译结束时,输出内容:image

  2. CompilationPipeline.compilationFinished
    命名空间:UnityEditor.Compilation;
    主要作用:当所有程序集编译结束会主动调用该回调函数
    参数:

    • object obj​:ActiveBuildStatus​ 活动生成状态对象
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void OnEnable()
    {
    CompilationPipeline.compilationFinished += CompilationPipeline_compilationFinished;
    }

    private void OnDestroy()
    {
    CompilationPipeline.compilationFinished -= CompilationPipeline_compilationFinished;
    }

    private void CompilationPipeline_compilationFinished(object obj)
    {
    Debug.Log("所有程序集编译结束" + obj.ToString());
    }

    当编译结束时,输出内容:image