@ts541933433
2020-04-28T10:18:00.000000Z
字数 2489
阅读 5573
《地幕交互》##
标题
##
TouchScript带接口源码:
下载方式:百度网盘(未更新) |
下载完成后把整个文件下放在项目Assets目录下就可以了
TUIO交互Demo(包含源码)
下载方式:百度网盘(最新) | GitHub(未更新)
场景中添加TouchManager与Cursors,在TouchScript/Prefabs目录下,直接拖入场景中即可。
然后分别进行属性配置。
- TouchManager:(输入源管理)
默认直接witch to Advance就可以了。(不需要光标可以把Debug的勾去掉)
在Standard Input属性中,最好把Enable Mouse on XXX这几个勾去掉,不然在分屏的时候会导致主屏幕的按钮点击不到。
然后Add Component一个Fullscreen Layer,Type选择Camera,把渲染地幕Canvas的相机拖进去。- Cursors:
(一个光标显示,在有输入源进入时会实时根据输入的点显示光标,建议在测试的时候添加使用,方便观察。)
Render Mode 选择 Screen Space Overlay
Target Display 选择 Display2- 最后在场景中任意物体上Add Component加上一个Tuio Input(接受输入源信息),参数默认不用修改。
以上是TouchScript的基本配置,这些配置好后才能正常使用TUIO,接受输入源信息。
以下几个脚本是将要用到的,路径在TouchScript/Script/TUIOFunction
- TUIOComponentManager.cs (接受输入源信息,监控管理所有需要实现地幕交互的场景物体)
- TUIOComponent.cs(TUIO组件基类)
- TUIOButtonBase.cs(TUIO类button操作基类)
- ButtonOriginalEvent.cs(类button操作,调用物体上button的OnClick方法)
- ButtonDefinedEvent.cs(类button操作,自定义方法。(当输入源进入,当输入源悬停多久算点击,当输入源退出))
在场景中任意物体上挂上脚本TUIOButtonManager,如图:
- TUIO Gameobject(所有需要实现投影交互功能的组件,都需要加入到该数组里,才能对其进行监听)
- Mouse_inpiut(鼠标输入源检测,默认为关闭)
当开启时,鼠标的进入也能触发TUIO事件,所以在项目运行时,鼠标在主屏上移动时可能会对分屏的按钮产生影响,项目正式打包运行时应该是关闭的。在开发期间可以打开,方便调试。
- Check Time:当输入源进入物体多少秒后进行判定。(例如:这里设置为0.8,那么当我的输入源踩进场景中按钮上超过了0.8秒,那么执行一次点击操作。)
- Released_time:在某些情况下会需要一段释放间隔,这个值就是当输入源离开后多久才算真正的释放
- 注意:以上两个值在这里的设置是全局设置,也就是不对单独对TUIOComponent进行按键时长配置的话,都会默认使用这个值。
所有的基类都继承于TUIOComponent,可以根据不同的功能性的不同进行扩展,目前我只分出了类Button功能的基类叫做TUIOButtonBase。
然后继承TUIOButtonBase的有以下几个子类:
ButtonOriginalEvent.cs,如图:
ButtonDefinedEvent.cs,如图:
三个参数Type和Check_time,Check_released_time
- Type:点击方式。1=单点(意为输入源进入并达到按键时长后只执行一次点击,直到输入源离开再重新进入。)2=长按(意为输入源如果一直在button上,那么每隔一次按键时长,都会执行一次点击效果。
- Check_time:上面说了Check_time是配置按键时长,我们在每个物体的脚本下可以主动配置按键时长。(0为默认,即使用全局按键时长)
- Check_released_time是配置释放时长,我们在每个物体的脚本下可以可以主动配置释放时长。(0为默认,即使用全局释放时长)
(ButtonOriginalEvent.cs)和(ButtonDefinedEvent.cs)区别
- ButtonOriginalEvent.cs:
实现一个方法,在触发事件后调用该按钮上的ButtonOnClick方法.- ButtonDefinedEvent.cs:
实现三个方法,(当输入源进入,当输入源退出,当输入源进入并持续了设定好的时长然后触发事件)
该方法可以自行定义,最后挂入到脚本中对应位置即可。
针对每个按钮
开启和关闭输入源监听的方式
//开启监听
thransform.getcomponent<TUIOComponent>().Open_monitoring()
//关闭监听
thransform.getcomponent<TUIOComponent>().Close_monitoring()
- TUIOFunctionWihtVector2: 调用一个带二维数组参数的方法,需要在脚本中找到TUIOFunctionWihtVector2然后监听事件(具体使用方法Demo里有)。
- TUIODrag: 绑定到一个需要拖拽的物体上,可以对其进行拖拽操作。
挂载好子类脚本的物体最后都必须添加到TUIOButtonManager上数组中,不然是不会响应事件的。