Unity强制进行编译,及编译后的回调处理

引言

在开发过程中有时会需要强制进行编译,并且在编译后要进行逻辑处理,则需要做以下操作。比如在命令行打包时,使用命令参数-quit 来回开关Unity很耗时,即可以调用一次Unity的接口。假如项目中有Lua编译环节,因为Clear Lua和Generate Lua会有c#的变动,会导致代码需要编译,则可以在Clear LuaGenerate Lua两个步骤下调用API进行强制编译,然后再回调里再进行Clear Lua或Generate Lua之后的操作。

Unity强制进行编译的API :

UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation();

编译后的回调处理(回调主要是以下这个标签及方法,步骤从1~3):

[UnityEditor.Callbacks.DidReloadScripts]
private static void OnScriptsReloaded()
{
    if (目前在Clear Lua)
    {
        2. 进行Generate Lua...
        // 强制编译
        UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation();
    }
    else if (目前在Generate Lua)
    {
        3. 进行Generate Lua之后的操作...
    }
}
// 命令行调用的c#方法
static void DoShellBuildPatch()
{
    1. 进行Clear Lua
    // 强制编译
    UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation();
{

 因为这样就开关1次Unity,即可完成打包流程,也不需要在打包脚本里分别调用Clear Lua和Generate Lua的接口,避免多次开关Unity浪费时间

你可能感兴趣的:(unity,lua)