Unity编译后报错是否有什么回调可用?

发布于 2017-01-28 19:30:49 字数 46 浏览 743 评论 2

想了解Unity在编译脚本报错时有没什么回调?或者有什么trick可以用的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚风撩人 2019-10-14 23:20:36

trick有一个,只是比较老了。 思路是尝试clear掉日志。而编译错误是Clear不掉的,因此可以判断出是否遇到了编译错误。

static void ClearLog()
     {
         Assembly assembly = Assembly.GetAssembly(typeof(SceneView));
         Type logEntries = assembly.GetType("UnityEditorInternal.LogEntries");
         logEntries.GetMethod("Clear").Invoke (new object (), null);

         int count = (int)logEntries.GetMethod("GetCount").Invoke(new object (), null);

         if (count u003E 0)
             throw new Exception("Cannot build because you have compile errors!");
     }
夜无邪 2018-05-28 17:37:23

public class CompilePostProcesser : AssetPostprocessor
{
static CompilePostProcesser() { EditorApplication.update += Update; }
// 所有编译完成之后的回调[注意小心造成递归的情况出现,也就是回调中的操作又重新引起了编译]
// 如果出现编译错误,那么这个回调不会被执行
[UnityEditor.Callbacks.DidReloadScripts]
private static void OnCompiled()
{
// Debug.ClearDeveloperConsole();
Debug.LogError("编译成功!");
SuccsccAction?.Invoke();
}
private static void Update()
{
if (EditorUtility.scriptCompilationFailed)
{
EditorApplication.update -= Update;
Debug.LogError("编译失败!");
FailAction?.Invoke();
}
}
}

试一下效果

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文