using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class OnTestDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerEnterHandler
{
private Vector3 mBeginPos;
private Image mimage;
private Canvas mCanvas;
private Transform mCurrentParent;
void Start()
{
mBeginPos = transform.position;
mCurrentParent = transform.parent;
mimage = transform.GetComponent<Image>();
mCanvas = GameObject.Find("Canvas").GetComponent<Canvas>();
}
public void OnBeginDrag(PointerEventData eventData)
{
mimage.raycastTarget = false;
mBeginPos = transform.position;
transform.SetAsLastSibling();
}
public void OnPointerEnter(PointerEventData eventData)
{
}
public void OnDrag(PointerEventData eventData)
{
transform.parent = mCanvas.transform;
transform.position = Input.mousePosition;
transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
OnTestDrag drag = eventData.pointerEnter.GetComponent<OnTestDrag>();
if (drag != null && drag.transform != transform)
transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
}
public void OnEndDrag(PointerEventData eventData)
{
OnTestDrag drag = eventData.pointerEnter.GetComponent<OnTestDrag>();
if (drag != null && drag.transform != transform)
{
Vector3 pos = drag.transform.position;
drag.transform.position = mBeginPos;
transform.position = pos;
transform.localScale = Vector3.one;
transform.parent = drag.transform.parent;
drag.transform.parent = mCurrentParent;
mCurrentParent = transform.parent;
}
else
{
transform.position = mBeginPos;
transform.localScale = Vector3.one;
transform.parent = mCurrentParent;
mCurrentParent = transform.parent;
}
mimage.raycastTarget = true;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/119ed6243a7137661fca789d91434b53.gif)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Chose_tool : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerEnterHandler
{
private Vector3 mBeginPos;
private Image mimage;
private Canvas mCanvas;
private Transform mCurrentParent;
void Start()
{
mimage = transform.GetComponent<Image>();
mCanvas = GameObject.Find("Canvas").GetComponent<Canvas>();
}
public void OnBeginDrag(PointerEventData eventData)
{
mBeginPos = transform.position;
mCurrentParent = transform.parent;
mimage.raycastTarget = false;
mBeginPos = transform.position;
transform.SetAsLastSibling();
}
public void OnPointerEnter(PointerEventData eventData)
{
}
public void OnDrag(PointerEventData eventData)
{
if (Input.mousePosition.x < 0 || Input.mousePosition.x > Screen.width ||
Input.mousePosition.y < 0 || Input.mousePosition.y > Screen.height)
{
return;
}
transform.parent = mCanvas.transform;
transform.position = Input.mousePosition;
transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
if (eventData.pointerEnter.tag == "point")
{
transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
print("dadasda");
}
}
public void OnEndDrag(PointerEventData eventData)
{
GameObject game_obj = eventData.pointerEnter;
if (game_obj.tag == "point")
{
Vector3 pos = game_obj.transform.position;
transform.position = pos;
transform.localScale = Vector3.one;
transform.parent = game_obj.transform;
mCurrentParent = transform;
}
else
{
Chose_tool drag = eventData.pointerEnter.GetComponent<Chose_tool>();
if (drag != null && drag.transform != transform)
{
Vector3 pos = drag.transform.position;
drag.transform.position = mBeginPos;
transform.position = pos;
transform.localScale = Vector3.one;
transform.parent = drag.transform.parent;
drag.transform.parent = mCurrentParent;
mCurrentParent = transform.parent;
}
else
{
transform.position = mBeginPos;
transform.localScale = Vector3.one;
transform.parent = mCurrentParent;
mCurrentParent = transform.parent;
}
}
mimage.raycastTarget = true;
}
}