当前位置:培训教程自学网 > Unity3D >

Unity教程之编辑器之Editor的GUI的事件拦截

栏目分类:Unity3D发布日期:2017-07-27浏览次数:文章来源:Unity3D学习网点击领取7天免费试听+3000元学费减免

关于丝路教师团队学员作品合作企业就业明星

OnGUI是Unity上一个时代的UI系统,而现在运行时的UI系统已经被UGUI取代,但是Editor的UI还是在用老的这一套GUI系统。比如unity编辑器里的所有窗口,布局,按钮,拖动条、滚动等等都是用

学习是劳动,是充满思想的劳动! —— 乌申斯基 开始学习

  OnGUI是Unity上一个时代的UI系统,而现在运行时的UI系统已经被UGUI取代,但是Editor的UI还是在用老的这一套GUI系统。比如unity编辑器里的所有窗口,布局,按钮,拖动条、滚动等等都是用GUI来写的。GUI提供了一套Event事件系统,虽然不能模拟它的事件,但是确可以进行拦截。

  比如说:

  1.限制Hierarchy视图的树状结构。(让某些对象不可随意移动层次结构)

  2.限制Project里的资源不能任意拖动(限制美术只能把一些资源放在规定的文件夹下面)

  3.限制GUI中按钮的点击

  4.拖拽资源或者对象绑定的时候执行一些自己的代码 等等

  把下面这段代码拷贝到你的工程中,你会发现你的Hierarchy视图还有Porject视图中的所有对象不能任意拖动了。。




  Event.current就是获取当前的事件,所有的事件都是由我们自己手动操作鼠标或者键盘产生的。比如 按下、抬起、移动、拖拽、右键、滚动、粘贴、复制、选择。全选 等 事件、详细的事件类型在这里。   代码中只需要去判断当前事件的类型,假如不想让这个事件渗透执行下去,那么就调用e.Use() 方法。这个方法的意思就是把这个事件删除了,不让后面的代码能监听到它。  首先获取事件必须在OnGUI中完成,Editor下也可以在类似的XXXOnGUI中完成。

  剩下的就是配合Selection.objects和 DragAndDrop.objectReferences 以及Input.mousePostion 一类的方法 来判断当前操作的对象,通过逻辑来灵活的判断是否要执行事件。或者是执行事件的同时在执行一些自己的代码。。

  OK Editor下的就说完了,我们再说说运行时的。如下图所示,我可以通过事件拦截的方法让这个按钮永远得不到点击的响应。

  代码是这样的

  总体来说我觉得Editor下还是很有必要监听事件类型的,因为想做一个好用的编辑器真的离不开这些。那今天的Unity教程之编辑器之Editor的GUI的事件拦截就结束了,喜欢的多多关注我们吧。
推荐阅读:南京unity3d培训,选丝路让你赢高薪

还有什么问题没解决的?点击【咨询专业老师想要咨询相关课程点击【课程咨询

首发地址: Unity教程之编辑器之Editor的GUI的事件拦截_丝路教程网

资源地址: http://blog.silucg.com/unity/7338.html(分享请保留)


相关热词: Unity教程

下一篇:没有了
Copyright © 2008-2016 blog.silucg.com 丝路教程网 版权所有 网站地图 XML PS软件 | 3DMAX软件 | Revit软件 | Maya软件 | VRay渲染器 | CAD软件 | AI软件 | BIM软件 |
展开