引言
在开发过程中有时会需要强制进行编译,并且在编译后要进行逻辑处理,则需要做以下操作。比如在命令行打包时,使用命令参数-quit 来回开关Unity很耗时,即可以调用一次Unity的接口。假如项目中有Lua编译环节,因为Clear Lua和Generate Lua会有c#的变动,会导致代码需要编译,则可以在Clear Lua和Generate 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浪费时间
|