Unity LeanTouch 笔记

作者: 朗迹张伟 | 来源:发表于2017-08-22 15:55 被阅读549次

    1.如何加入LeanTouch

    安装完LeanTouch插件后,在GameObject里会出现Lean->Touch

    Paste_Image.png

    2.一个点击屏幕生成prefab的例子

    2.1 建立一个scene,加入LeanTouch

    Paste_Image.png

    2.2 建立一个方块,拖到Asset中,变成prefab
    2.3 在LeanTouch(GameObject)中,建立LeanSpawn(Component),并把方块拖到Prefab中

    Paste_Image.png

    2.4 继续建立LeanFingerDown的动作,为点击的event选择对象为自己(LeanTouch,即有LeanSpawn的对象),并在Function中选择LeanSpawn.Spawn。

    Paste_Image.png
    2.5 LeanSpawn中的Distance为与摄像机的距离
    这样就完成,点击屏幕,会出现一个方块。

    3.C#的简单格式

    3.1 增加点击事件

    Paste_Image.png

    3.2 实时获取指头的信息

    Paste_Image.png

    3.3 Lean.Touch.LeanGesture可以实现多指操作,比如旋转

    3.4 离开UI不操作

    Paste_Image.png

    3.5 使用using Lean.Touch; 实现简写

    Paste_Image.png

    3.6 用组合的方式,提供多种操作
    LeanGesture.GetPinchScale(LeanTouch.GetFingers(true))


    4.设置触发动作的order,可以解决输入延迟一帧的问题

    4.1 Edit → Project Settings → Script Execution Order.
    4.2 设置order


    5.Camera

    5.1 LeanCameraMove
    使得摄像机可以被手指拖动
    5.2 LeanCameraZoom
    使得摄像机可以被两指放大
    5.3 LeanCameraMoveSmooth
    使得摄像机可以被手指拖动,效果更平滑
    5.4 LeanCameraZoomSmooth
    使得摄像机可以被两指放大,效果更平滑
    5.5 LeanPitchYaw
    使得摄像机可以环绕观看四周空间
    5.5 LeanPitchYawSmooth
    使得摄像机可以环绕观看四周空间,效果更平滑


    6.Finger

    6.1 LeanFingerTap
    轻触,当设置RequiredTapInterval为2时,可理解为双击
    当设置IgnoreIfOverGui,在UI上可以失效

    6.2 LeanSpawn
    设置一个预制体,并设置与摄像机的距离

    6.3 LeanDestroy
    设置销毁的时间

    6.4 LeanFingerHeld
    长按

    6.5 LeanFingerLine
    手指拖动,产生一条线

    6.6 LeanMultiTap
    多点触控,通过连接一个脚本,传递count,highest

    Paste_Image.png Paste_Image.png

    6.6 LeanFingerTrail
    跟踪指头,拖尾

    6.7 LeanOpenUrl
    可以通过button等实现链接

    6.8 LeanPressSelect 来设置物体被点击和拖动
    LeanPressSelect设置后,会在CurrentSelectables里保存被点击多个点

    6.9 LeanSelectableSpriteRendererColor
    通过在被点击的物体上加入“LeanSelectableSpriteRendererColor”脚本,可以实现点击变色,这里要注意,被点击的需要加入CircleCollider2D/3D的碰撞组件,SpriteRenderer也是需要的。LeanSelectable也是需要加上的。

    6.10 LeanSelectable
    LeanSelectable在On Select里加入动作,可以通过LeanDestroy来设置LeanDestroy.DestroyNow来消除

    6.11 LeanTranslate
    在物体上加入LeanTranslate,配合上边的组件,可以实现物体拖动,LeanTranslateSmooth可以更平滑点

    6.12 实现3D物体被点击和拖动
    LeanPressSelect里的SelectUsing设置Raycast3D,
    LeanSelectableRendererColor可以设置3D物体的颜色变化

    6.13 LeanSelectableTranslateInertia3D
    LeanSelectableTranslateInertia3D可以结合刚体来,来设置带碰撞的拖动

    6.14 LeanTapSelect
    选择一个物体的对象,选择到的对象被记录在CurrentSelectable,这里只能选一个对象

    6.15 LeanRotate
    旋转,可设置x,y,z轴对应旋转

    6.16 LeanScale
    放大缩小


    7.Swipe

    7.1 LeanSwipeDirection4
    四个方向上的滑动

    7.2 LeanSwipeDirection8
    八个方向上的滑动

    7.3 LeanSwipeRigidbody2D/3D LeanSwipeRigidbody2D/3DNoRelease
    刚体滑动


    8.Gesture

    8.1 LeanTouchEvents

    using UnityEngine;
    using System.Collections.Generic;
    
    namespace Lean.Touch
    {
        // This script will hook into event LeanTouch event, and spam the console with the information
        public class LeanTouchEvents : MonoBehaviour
        {
            protected virtual void OnEnable()
            {
                // Hook into the events we need
                LeanTouch.OnFingerDown  += OnFingerDown;
                LeanTouch.OnFingerSet   += OnFingerSet;
                LeanTouch.OnFingerUp    += OnFingerUp;
                LeanTouch.OnFingerTap   += OnFingerTap;
                LeanTouch.OnFingerSwipe += OnFingerSwipe;
                LeanTouch.OnGesture     += OnGesture;
            }
            
            protected virtual void OnDisable()
            {
                // Unhook the events
                LeanTouch.OnFingerDown  -= OnFingerDown;
                LeanTouch.OnFingerSet   -= OnFingerSet;
                LeanTouch.OnFingerUp    -= OnFingerUp;
                LeanTouch.OnFingerTap   -= OnFingerTap;
                LeanTouch.OnFingerSwipe -= OnFingerSwipe;
                LeanTouch.OnGesture     -= OnGesture;
            }
            
            public void OnFingerDown(LeanFinger finger)
            {
                Debug.Log("Finger " + finger.Index + " began touching the screen");
            }
            
            public void OnFingerSet(LeanFinger finger)
            {
                Debug.Log("Finger " + finger.Index + " is still touching the screen");
            }
            
            public void OnFingerUp(LeanFinger finger)
            {
                Debug.Log("Finger " + finger.Index + " finished touching the screen");
            }
            
            public void OnFingerTap(LeanFinger finger)
            {
                Debug.Log("Finger " + finger.Index + " tapped the screen");
            }
            
            public void OnFingerSwipe(LeanFinger finger)
            {
                Debug.Log("Finger " + finger.Index + " swiped the screen");
            }
            
            public void OnGesture(List<LeanFinger> fingers)
            {
                Debug.Log("Gesture with " + fingers.Count + " finger(s)");
                Debug.Log("    pinch scale: " + LeanGesture.GetPinchScale(fingers));
                Debug.Log("    twist degrees: " + LeanGesture.GetTwistDegrees(fingers));
                Debug.Log("    twist radians: " + LeanGesture.GetTwistRadians(fingers));
                Debug.Log("    screen delta: " + LeanGesture.GetScreenDelta(fingers));
            }
        }
    }
    

    9.如何让一个物体可以被tap

    9.1 增加一个LeanTouch
    9.2 增加一个LeanTapSelect,并选择好是2D/3D (Select Using)

    Paste_Image.png Paste_Image.png

    9.3 在物体上,加入LeanSelectable,并保证有Collider在

    Paste_Image.png

    9.4 可以使用LeanSelect的一些函数,也可以在OnSelect事件里加入动作,
    把带LeanSelectable的物体拉倒里面,并选择一个处理函数即可。

    相关文章

      网友评论

        本文标题:Unity LeanTouch 笔记

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