1. Drag and drop
Three interfaces: (before dragging, during dragging, and end of dragging)
IBeginDragHandler, IDragHandler, IEndDragHandler
reference namespace: using UnityEngine.EventSystems;
(the same below)
//防止射线穿透
CanvasGroup cg;
void Start()
{
cg = transform.GetComponent<CanvasGroup>();
}
//拖拽前
public void OnBeginDrag(PointerEventData eventData)
{
//防止穿透(防止拖拽的物体穿透在里面而被遮住)
cg.blocksRaycasts = false;
}
//拖拽时
public void OnDrag(PointerEventData eventData)
{
//拖拽物体跟随鼠标移动而移动
transform.position = Input.mousePosition;
}
//拖拽结束
public void OnEndDrag(PointerEventData eventData)
{
//触碰对象
GameObject go = eventData.pointerEnter;
//GameObject go = eventData.pointerCurrentRaycast.gameObject;//触碰对象
//如果放进空的背包格子里
//就设置子父级
transform.SetParent(go.transform);
//然后居中位置
transform.localPosition = Vector3.zero;
}
2. Mouse move, leave
interface: IPointerEnterHandler, IPointerExitHandler
public void OnPointerEnter(PointerEventData eventData){
}
public void OnPointerExit(PointerEventData eventData){
}