少年修仙传客户端代码仓库
hch
3 天以前 600733c8f592cb9e65f2b7a3e110ac1d686e6bfe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
 
 
public class UIDragDropBehaviour : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler, IPointerEnterHandler
{
    public static bool draging = false;
    public static int dragData = 0;
 
    [HideInInspector] public int data;
 
    const float dragDelay = 0.2f;
 
    bool m_AllowDragDrop = true;
    bool m_OnPress = false;
    bool m_AllowClick = false;
    float m_Time = 0.0f;
 
    public event Action<int> onClick;
 
    public void Init(int data)
    {
        this.data = data;
    }
 
    public void SetDragDropState(bool allow)
    {
        m_AllowDragDrop = allow;
    }
 
    public void OnPointerDown(PointerEventData eventData)
    {
        draging = false;
        m_AllowClick = true;
        m_Time = 0f;
        if (!m_AllowDragDrop)
        {
            return;
        }
        m_OnPress = true;
    }
 
    public void OnPointerEnter(PointerEventData eventData)
    {
        m_AllowClick = true;
    }
 
    public void OnPointerExit(PointerEventData eventData)
    {
        m_AllowClick = false;
    }
 
    public void OnPointerUp(PointerEventData eventData)
    {
        var position = Input.mousePosition;
        if (!draging && m_AllowClick)
        {
            if (onClick != null)
            {
                onClick(data);
            }
        }
        m_OnPress = false;
    }
 
    private void LateUpdate()
    {
        if (m_OnPress && !draging)
        {
            m_Time += Time.deltaTime;
            if (m_Time > dragDelay)
            {
                dragData = data;
                draging = true;
                m_Time = 0;
                m_OnPress = false;
            }
        }
    }
}