You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.1 KiB
95 lines
2.1 KiB
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.EventSystems;
|
|
|
|
|
|
public enum ItemType
|
|
{
|
|
ChuanGanQi,
|
|
SheXiang,
|
|
ZHLuDeng,
|
|
LeiDa,
|
|
|
|
}
|
|
|
|
public class DragItem : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
|
|
{
|
|
|
|
public ItemType itemType;
|
|
|
|
[Header("鼠标按下事件")]
|
|
public UnityEvent _Downevent;
|
|
|
|
[Header("鼠标松开事件")]
|
|
public UnityEvent _UpEvent;
|
|
|
|
[Header("鼠标拖拽事件")]
|
|
public UnityEvent _DragEvent;
|
|
|
|
|
|
private bool canDrag = false;
|
|
private Vector3 tempPos;
|
|
private Vector3 resetPos;
|
|
|
|
private void OnEnable()
|
|
{
|
|
resetPos = transform.localPosition;
|
|
// _UpEvent.AddListener(CheckDragAear);
|
|
}
|
|
|
|
public void OnDrag(PointerEventData eventData)
|
|
{
|
|
if (canDrag)
|
|
{
|
|
_DragEvent.Invoke();
|
|
this.transform.position = Input.mousePosition;
|
|
}
|
|
}
|
|
|
|
public void OnPointerDown(PointerEventData eventData)
|
|
{
|
|
canDrag = true;
|
|
_Downevent.Invoke();
|
|
//DragCheck[] checks = GameObject.FindObjectsOfType<DragCheck>();
|
|
//for (int i = 0; i < checks.Length; i++)
|
|
//{
|
|
|
|
// checks[i].Show();
|
|
//}
|
|
}
|
|
|
|
public void OnPointerUp(PointerEventData eventData)
|
|
{
|
|
canDrag = false;
|
|
tempPos = transform.position;
|
|
transform.localPosition = resetPos;
|
|
CheckDragAear();
|
|
_UpEvent.Invoke();
|
|
|
|
//DragCheck[] checks = GameObject.FindObjectsOfType<DragCheck>();
|
|
//for (int i = 0; i < checks.Length; i++)
|
|
//{
|
|
|
|
// checks[i].Hide();
|
|
//}
|
|
}
|
|
|
|
|
|
private void CheckDragAear()
|
|
{
|
|
DragCheck[] checks = GameObject.FindObjectsOfType<DragCheck>();
|
|
for (int i = 0; i < checks.Length; i++)
|
|
{
|
|
Vector3 checkPos= CameraManager.Instance.MainCamera.WorldToScreenPoint(checks[i].transform.position);
|
|
if (Vector2.Distance(this.tempPos, checkPos) <= 60)
|
|
{
|
|
//放置
|
|
checks[i].ShowItem(this.itemType);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|