[关闭]
@ts541933433 2020-04-28T10:18:00.000000Z 字数 2489 阅读 5573

《地幕交互》## 标题 ##

地幕交互接口使用说明

该接口就是基于TouchScript的TUIO协议编写的一个接口,使用方式很简单,下面就来说说操作与原理。

1.首先导入插件包

TouchScript带接口源码:
下载方式:百度网盘(未更新) |
下载完成后把整个文件下放在项目Assets目录下就可以了

TUIO交互Demo(包含源码)
下载方式:百度网盘(最新) | GitHub(未更新)


2.相关配置

场景中添加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,接受输入源信息。


3.接入接口实现地幕交互功能。

以下几个脚本是将要用到的,路径在TouchScript/Script/TUIOFunction

  • TUIOComponentManager.cs (接受输入源信息,监控管理所有需要实现地幕交互的场景物体)
  • TUIOComponent.cs(TUIO组件基类)
  • TUIOButtonBase.cs(TUIO类button操作基类)
  • ButtonOriginalEvent.cs(类button操作,调用物体上button的OnClick方法)
  • ButtonDefinedEvent.cs(类button操作,自定义方法。(当输入源进入,当输入源悬停多久算点击,当输入源退出))

使用方法:

TUIO按钮管理 TUIOButtonManager

在场景中任意物体上挂上脚本TUIOButtonManager,如图:

tool-manager

1.属性栏中有1个数组,1个参数。

  • TUIO Gameobject(所有需要实现投影交互功能的组件,都需要加入到该数组里,才能对其进行监听)
  • Mouse_inpiut(鼠标输入源检测,默认为关闭)
    当开启时,鼠标的进入也能触发TUIO事件,所以在项目运行时,鼠标在主屏上移动时可能会对分屏的按钮产生影响,项目正式打包运行时应该是关闭的。在开发期间可以打开,方便调试。

2.脚本中两个值(点击时间;释放时间),如图:

tool-manager

  • Check Time:当输入源进入物体多少秒后进行判定。(例如:这里设置为0.8,那么当我的输入源踩进场景中按钮上超过了0.8秒,那么执行一次点击操作。)
  • Released_time:在某些情况下会需要一段释放间隔,这个值就是当输入源离开后多久才算真正的释放
  • 注意:以上两个值在这里的设置是全局设置,也就是不对单独对TUIOComponent进行按键时长配置的话,都会默认使用这个值。

3.基类

所有的基类都继承于TUIOComponent,可以根据不同的功能性的不同进行扩展,目前我只分出了类Button功能的基类叫做TUIOButtonBase。
然后继承TUIOButtonBase的有以下几个子类:

ButtonOriginalEvent.cs,如图:
tool-manager

ButtonDefinedEvent.cs,如图:
tool-manager
三个参数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:
    实现三个方法,(当输入源进入,当输入源退出,当输入源进入并持续了设定好的时长然后触发事件)
    该方法可以自行定义,最后挂入到脚本中对应位置即可。

针对每个按钮
开启和关闭输入源监听的方式

  1. //开启监听
  2. thransform.getcomponent<TUIOComponent>().Open_monitoring()
  3. //关闭监听
  4. thransform.getcomponent<TUIOComponent>().Close_monitoring()

4.另外两个子类:

  • TUIOFunctionWihtVector2: 调用一个带二维数组参数的方法,需要在脚本中找到TUIOFunctionWihtVector2然后监听事件(具体使用方法Demo里有)。
  • TUIODrag: 绑定到一个需要拖拽的物体上,可以对其进行拖拽操作。

挂载好子类脚本的物体最后都必须添加到TUIOButtonManager上数组中,不然是不会响应事件的。


在运行环境都配置好的情况下,直接打包发布运行,就可以看到效果了,非常的简单。

最后在下载的TouchScript包内有一个TUIO_Demo目录,里面有一个TUIO_Demo场景,可以看到一个实现投影交互功能的简单案例。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注