Skip to content

Instantly share code, notes, and snippets.

@Jakob-PB
Last active November 6, 2020 03:59
Show Gist options
  • Save Jakob-PB/ef8c98da16ef205bc1054b1517655748 to your computer and use it in GitHub Desktop.
Save Jakob-PB/ef8c98da16ef205bc1054b1517655748 to your computer and use it in GitHub Desktop.
A small editor script that adds a menu item which recompiles the entire project (and also prints out how long it took).
using UnityEditor;
using UnityEditor.Compilation;
using UnityEngine;
public class RecompileMenuItem : Editor
{
private static bool _isCompiling = false;
private static double _compileTime;
[MenuItem("Tools/Recompile Project", false, -9999)]
private static void RecompileProject()
{
if (!_isCompiling)
{
CompilationPipeline.compilationStarted += OnCompilationStarted;
CompilationPipeline.compilationFinished += OnCompilationFinished;
CompilationPipeline.RequestScriptCompilation();
}
}
private static void OnCompilationStarted(object obj)
{
Debug.Log("Starting recompilation of all project scripts...");
_isCompiling = true;
_compileTime = EditorApplication.timeSinceStartup;
CompilationPipeline.compilationStarted -= OnCompilationStarted;
}
private static void OnCompilationFinished(object obj)
{
_isCompiling = false;
_compileTime = EditorApplication.timeSinceStartup - _compileTime;
Debug.Log($"Finished compiling all scripts in {_compileTime.ToString("F1")} seconds.");
CompilationPipeline.compilationFinished -= OnCompilationFinished;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment