|
2021.12.6 又是充实工具库的一天呢
每次批量写C#脚本或修改脚本目录结构,都会触发很多次脚本编译。项目比较大的时候,每次加载脚本都是漫长的等待。所以写个小工具,解放一下自我。
unity提供了两个函数来 锁定程序集的重新加载
EditorApplication.LockReloadAssemblies
EditorApplication.UnlockReloadAssemblies 需要注意解锁
需要注意解锁
需要注意解锁
[InitializeOnLoad]
internal class SetReloadAssemblies
{
static SetReloadAssemblies()
{
EditorApplication.playModeStateChanged += LogPlayModeState;
}
private static void LogPlayModeState(PlayModeStateChange state)
{
if (state == PlayModeStateChange.EnteredPlayMode && EditorPrefs.GetBool(KEY, false))
{
EditorApplication.isPlaying = false;
Debug.LogWarning("重新加载程序集已被锁定。");
EditorUtility.DisplayDialog("警告", "已锁定重新加载程序集,请注意!!!", "知道后果");
}
}
private const string MENUKEY = "ToolKit/LockReloadAssemblies";
private const string KEY = "LockReloadAssemblies";
[MenuItem(MENUKEY, priority = int.MaxValue)]
private static void SetLockReloadAssemblies()
{
if (EditorPrefs.GetBool(KEY, false))
{
Debug.Log("重新加载程序集已解锁。");
EditorApplication.UnlockReloadAssemblies();
EditorPrefs.SetBool(KEY, false);
Menu.SetChecked(MENUKEY, false);
}
else
{
if (EditorUtility.DisplayDialog("提示", "是否锁定 重新加载程序集 \n\n锁定以后无法重新加载程序集,\n也不会触发脚本编译。", "继续锁定", "取消"))
{
Debug.Log("重新加载程序集已锁定。");
EditorApplication.LockReloadAssemblies();
EditorPrefs.SetBool(KEY, true);
Menu.SetChecked(MENUKEY, true);
}
}
}
} |
|