美文网首页
Unity中TouchScript中有用的接口IGestureD

Unity中TouchScript中有用的接口IGestureD

作者: CodeHunter | 来源:发表于2018-06-28 14:24 被阅读0次

今天给大家介绍TouchScript中另外一个非常有用的接口——IGestureDelegate

那么他有什么用呢?比如说我们有这样一个需求,可能在场景中的物体在平时都能响应各种触摸事件。但可能在一段时间内不让他响应触摸或者禁止触摸事件,应该怎样去做呢?

如果按一般思路就可能有一个Manager管理类定义一个公有变量,然后在注册所有触控事件的时候,如果当那个变量为false的时候,就直接return,但这样我们每一个触摸事件都可能需要写这样一段代码来控制。

而如果有了IGestureDelegate这个接口,那就给我们从整个脚本层面去控制一个手势是否能被识别;

A delegate which can be set to and control what this gesture can or can not do.

This is a way to control very precisely how affected gestures work without inheriting from them and overriding their behavior.

首先用一个类继承这个接口

这个接口需要实现三个方法,shouldbegin:是否可以开始识别一个手势

shouldReceiveTouch:是否接受触点

ShouldRecognizeSimultaneously:是否可以让两个手势同时被识别

这样就可以简单申明一个公有变量去改变这个公有变量来控制是否接受手势识别。

然后GestureManger.instance.globaGestureDelegate 等于这个实现的接口。然后用空格来改变是否能识别。

然后你把这个脚本挂在在场景里,你可以让其他物体注册相应的事件。然后通过空格来改变是否接受Tap事件。

完整代码案例如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

// using TouchScript.Gestures;

using TouchScript;

using TouchScript.Gestures;

public class TestGestureDelegate : MonoBehaviour, IGestureDelegate

{

    public Gesture tap;

    public bool isReceive = false;

    public bool ShouldBegin(Gesture gesture)

    {

        if (!isReceive)

        {

            return tap == gesture;

        }

        return isReceive;

    }

    public bool ShouldReceiveTouch(Gesture gesture, TouchPoint touch)

    {

        if (!isReceive)

        {

            return tap == gesture;

        }

        return isReceive;

    }

    public bool ShouldRecognizeSimultaneously(Gesture first, Gesture second)

    {

        return false;

    }

    // Use this for initialization

    void Start()

    {

        GestureManager.Instance.GlobalGestureDelegate = this;

    }

    // Update is called once per frame

    void Update()

    {

        if (Input.GetKeyDown(KeyCode.Space))

        {

            isReceive = !isReceive;

        }

    }

}

相关文章

  • Unity中TouchScript中有用的接口IGestureD

    今天给大家介绍TouchScript中另外一个非常有用的接口——IGestureDelegate 那么他有什么用呢...

  • Unity中用TouchScript的ICoordinatesR

    之前在做一个关于触摸框的项目时候,因为触摸框的校准问题,所以当用户点了一个点的时候,显示在另外一个地方,所以就提出...

  • Unity3D 与 iOS交互

    Unity C# 代码 Objective-C中的桥接文件 Objective-C中的接口文件

  • Unity和Android交互

    前言: 在 Android 软件的开发中,会经常遇到 Unity 调用 Android 中的接口方法,不单是内购和...

  • Unity 3D 音效实现

    引子 最近项目有用到场景音效稍微研究了下在Unity中该如何实现3D音效的效果 前提 基于 Unity3d 5.4...

  • Unity实现震动效果

    一、Unity中提供了震动的接口:Handheld.Vibrate(); Unity提供的这个接口的震动时长是0....

  • UGUI组件控件

    实现Button点击事件的三种方法: 1.用实现接口的方式实现点击方法。 2.在Unity 3D中调用脚本中的Bu...

  • Http相关

    *Unity中Http访问和下载*Unity中Http的优化*HTTP断点续传相关概念**简书:Unity发送HT...

  • iOS中实现unity的方法

    说明 iOS中实现unity的方法,是指unity中申明了一个方法,在iOS端实现其方法例如,在unity中申明了...

  • Unity中实现号码归属地的查询

    这里,我们在Unity中实现号码归属地的查询的功能,本文用到的是Mob的归属地查询免费接口。 http://www...

网友评论

      本文标题:Unity中TouchScript中有用的接口IGestureD

      本文链接:https://www.haomeiwen.com/subject/cqegyftx.html