零基础入门 42:更新Unity2017快捷键清除日志


Hello,之前在零基础入门系列里,有发过关于快捷键清除日志的文章,但是当时的Unity版本是Unity5.5,很多人和我说用起来都还蛮方便,但是随着2017的普及使用,发现这个脚本在Unity2017里报错了,会提示空引用等错误,然后也无法清除日志,问我怎么解决。

问的人越来越多,那干脆今天就来简单说一下如何替换代码逻辑实现2017快捷键清除日志吧

进入正题


之前在Unity 5.5的版本中,通过下面的代码逻辑来实现快捷键清除日志,

通过System.Type获取到dll里的LogEntries,通过反射来进行快捷键清除日志的函数查找和调用,执行清除操作。使用效果图如下,alt+c快捷清除日志

但是在Unity2017里,使用这个代码就会报错,提示空引用,找不到引用对象,那么应该如何在这基础上做修改呢?

逻辑如下

通过上图可以看出,之前在unity5.5版本的代码已经都被我注释掉了,而新的适合在Unity2017中使用的,正是下面的那些逻辑。

通过反射查找方法的逻辑都是一样的,区别在于如果获取到LogEntries,Unity2017中不再通过System.Type去GetType获取,而是通过Assembly去GetType拿到LogEntries。

清晰图如下

代码逻辑如下

[MenuItem("Jimin/Clear Console &c")]

public static void ClearConsole()

{

/* change by Jimin ---->>> The under code can't used in 2017

Type logEntries = System.Type.GetType("UnityEditorInternal.LogEntries,UnityEditor.dll");

var methrod = logEntries.GetMethod("Clear", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);

if (methrod != null)

{

methrod.Invoke(null, null);

GUIUtility.keyboardControl = 0;

}

else

{

Debug.LogWarning("Can't find methord");

}

*/

//for unity 2017 add by Jimin

Assembly assembly = Assembly.GetAssembly(typeof(SceneView));

Type logEntries = assembly.GetType("UnityEditor.LogEntries");

var method = logEntries.GetMethod("Clear", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);

if (method != null)

{

method.Invoke(null, null);

GUIUtility.keyboardControl = 0;

}

else

{

Debug.LogWarning("Can't find clear method");

}

}

好了,这下之前有问题的就可以按照今天的分享内容来进行修改啦。

这期的分享就结束了,大家下期分享见咯。

原文发布于微信公众号 - 韩东吉的Unity杂货铺(DeveloperJimin)

原文发表时间:2018-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏更流畅、简洁的软件开发方式

分页解决方案 之 数据访问函数库——另类的思路、另类的写法,造就了不一样的发展道路。

    如何访问数据库?一个老掉牙的问题,方法多了去了,什么直接使用ado.net、使用SQLHelp、使用微软的企业库、使用ORM、使用LinQ to SQL...

24780
来自专栏大内老A

ASP.NET MVC以ValueProvider为核心的值提供系统: ValueProviderFactory

在ASP.NET Model绑定系统中,用于提供数据值的ValueProvider对象通过ValueProviderFactory来创建。在ASP.NET MV...

22280
来自专栏JetpropelledSnake

Django学习笔记之Django中间件

15250
来自专栏抠抠空间

Django之views系统

Django的View(视图)简介 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。 响应可以是一张网页...

42870
来自专栏码云1024

C#线程

35750
来自专栏代码世界

Django 中间件

中间件 前言   之前我们给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面。我们通过给几个特定视图函数加装饰器实现了这个需求。但是以后...

536130
来自专栏Jackson0714

干货分享:详解线程的开始和创建

29160
来自专栏java、Spring、技术分享

Redis设计与实现读书笔记

  Redis底层的数据库采用的就是这种结构,还有哈希键的底层实现之一也是采用HashMap这种结构。 哈希表的节点结构如下:

16220
来自专栏智能大石头

模版引擎XTemplate与代码生成器XCoder(源码)

模版引擎XTemplate是一个仿T4设计的引擎,功能上基本与T4一致(模版语法上完全兼容T4,模版头指令部分兼容)。     自己设计模版引擎,就是为了代码...

22470
来自专栏JetpropelledSnake

Django学习笔记之Django视图View

16730

扫码关注云+社区

领取腾讯云代金券