原标题:[专栏作家]Unity实用小工具或脚本—3D炫酷UI篇(一)
一、前言
最近做AR和VR的项目,经常需要用到3D的UI,特意将最近自己捣鼓的这个UI的东西写下来。效果如图所示:主要的动画和素材也是借鉴了
第三方的插件“HoloUIExample”,本文主要在此资源和动画的基础上,添加了自定义的几种交互事件,并且事件采用了反射功能做到类似于unity自带的EventTrigger一样可以自由动态绑定事件接收的对象和方法。如图所示为EventTrigger的绑定事件的接收方法在面板上的操作示意图
本文当前阶段事件动态绑定的界面操作示意图如下图所示
EventTrigger主要是针对Unity自带的鼠标操作事件的处理,本文的3DUI采用了自己封装的一套鼠标交互形式,当然还是使用了射线去检测,不过其拓展性可见一斑,我们可以自己将射线定义到任何物体上,比如AR或VR的手柄上,从而进行自定义的UI交互。
二、实现过程
1、鼠标射线处理的代码如下:该脚本中处理鼠标光标悬浮进入物体和退出悬浮物体、鼠标左键单击选中以及鼠标左键双击的处理逻辑。
所有的事件处理的逻辑的代码都是通过接口“UI3D_BtnEventInterface”来完成,采用多态的形式,将继承自该“UI3D_BtnEventInterface”接口的方法进行调用。基本逻辑就是先射线检测是否是继承了“UI3D_BtnEventInterface”接口,然后调用该结构中的方法,如Hover、UnHover等等
2、下一步实现“UI3D_BtnEventInterface”的具体实现,新建一个“UI3D_BtnEvent”脚本,代码如下:
这里采用了“SendMessage”的方法,将动态绑定的对象中定义的公有方法的名称来调用具体的对象中的方法。另外,几个变量都要采用序列化,方便在编辑代码中调用和修改。
3、接下来就是在编辑器中的逻辑代码,这个会稍微复杂一点。代码如下:
三、总结
1、基本实现的Hover和UnHover的功能,以及动态绑定的自定义编辑功能
2、还有很多功能需要进一步拓展,敬请关注后续
3、现在编辑界面的逻辑也不太完善,需要进一步完善返回搜狐,查看更多
责任编辑: