找回密码
 注册帐号

扫一扫,访问微社区

脚本 unity 鼠标右键点击事件 瞬间按下和一直按住

3
回复
109
查看
打印 上一主题 下一主题
[ 复制链接 ]
4四处流浪
330/500
排名
12677
昨日变化

5

主题

136

帖子

330

积分

Rank: 4

UID
309776
好友
0
蛮牛币
250
威望
0
注册时间
2018-12-26
在线时间
117 小时
最后登录
2019-9-27
5蛮牛币
右键可以控制镜头上下左右旋转,左键平移。然后左键双击物体镜头拉近,右键单击返回上一个镜头(就是拉远)。其他都实现了,但是右键返回和右键控制镜头旋转冲突了。我只要按右键就肯定会先实现返回拉远功能。有没有好的方法,单击一次镜头拉远,按住可以旋转。在此请教大佬。

这个可以判断是不是按住,但是并不能实现想要的效果。

回复

使用道具 举报

7日久生情
2081/5000
排名
1410
昨日变化

15

主题

238

帖子

2081

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
48492
好友
8
蛮牛币
9559
威望
0
注册时间
2014-10-11
在线时间
922 小时
最后登录
2019-9-27
QQ
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;

public class ButtonLongPress : UIBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler, IPointerClickHandler
{

    [Tooltip("按下多长时间触发长按")]
    public float duration = 1.0f;

    public UnityEvent onLongPress = new UnityEvent();
    public UnityEvent onClick = new UnityEvent();

    private bool isDown = false;
    private bool longPress = false;
    private float touchTime;

    private void Update()
    {
        if (isDown && !longPress)
        {
            if (Time.time - touchTime > duration)
            {
                longPress = true;
                //长按
                LongPress();
            }
        }
    }

    public void OnPointerDown(PointerEventData eventData) //按下执行
    {
        touchTime = Time.time;
        isDown = true;
        longPress = false;
    }

    public void OnPointerUp(PointerEventData eventData) //抬起执行
    {
        isDown = false;
    }

    public void OnPointerExit(PointerEventData eventData) //离开执行
    {
        isDown = false;
    }

    //长按方法执行了,就不执行点击,,,反之亦然...
    public void OnPointerClick(PointerEventData eventData)
    {
        if (!longPress)
        {
            PressDowm();
        }
    }
    /// <summary>
    /// 长按
    /// </summary>
    private void LongPress()  //  todo...方法中实现,要做的事情
    {
        print("长按");
    }
    /// <summary>
    /// 点击
    /// </summary>
    private void PressDowm()
    {
        print("点击");

    }

}


回复

使用道具 举报

1

主题

16

帖子

33

积分

Rank: 1

UID
302926
好友
0
蛮牛币
152
威望
0
注册时间
2018-11-6
在线时间
16 小时
最后登录
2019-9-27
继承OnDrag(PointerEventData eventData)拖动的接口,可以使用(eventData.button==PointerEventData.InputButton.right)判断是否是右键拖动。
主要是PointerEventData.InputButton这个进行判断。
不知道能不能顺着这个思路帮助解决一下。如未帮助请见谅。
回复

使用道具 举报

4四处流浪
330/500
排名
12677
昨日变化

5

主题

136

帖子

330

积分

Rank: 4

UID
309776
好友
0
蛮牛币
250
威望
0
注册时间
2018-12-26
在线时间
117 小时
最后登录
2019-9-27
地板
楼主 3 天前 只看该作者
liyan_ 发表于 2019-9-23 16:44
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;

感谢,清晰详细。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则