首先认识三个组件
1、Grid Layout Group
2、Horizontal Layout Group
3、Vertical Layout Group
以上三个就是制作背包UI的关键组件,主要就是通过这三个Component来对背包的UI布局
然后是事件系统
1、Drag滑动(拖动)事件
主要有四个event他们分别是:
IInitializePotentialDragHandler:初始化,鼠标最对应地方摁下出发(鼠标Down)每次点击触发一次
IBeginDragHandler:鼠标移动出发,第一下移动触发一次
IDragHandler:一直触发
IEndDragHandler:结束(鼠标Up)鼠标点击松开触发一次
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class s3Test :
MonoBehaviour,IInitializePotentialDragHandler,IBeginDragHandler,IDragHandler,IEndDragHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("BeginDrag");
}
public void OnDrag(PointerEventData eventData)
{
Debug.Log("OnDrag");
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("EndDrag");
}
public void OnInitializePotentialDrag(PointerEventData eventData)
{
Debug.Log("initialDrag");
}
}
2、拖拽和交换物品
为拖拽物品添加CanvasGroup组件, 当BlacksRaycasts = false 时射线可以检测到下一层物体,为true是不可以检测下一层。
CanvasGroup cg;
void Start()
{
cg = GetComponent<CanvasGroup>();
}
public void OnBeginDrag(PointerEventData eventData)
{
cg.blocksRaycasts = false;
}
public void OnEndDrag(PointerEventData eventData)
{
cg.blocksRaycasts = true;
GameObject go = eventData.pointerEnter;//碰撞到的对象
if (go.transform.CompareTag("Cell"))
{
transform.parent=go.transform;
transform.localPosition = Vector3.zero;
}
//碰到物品交换
}
3、鼠标放到图片上面出现提示信息
public class Img : MonoBehaviour,IPointerEnterHandler, IPointerExitHandler
{
public void OnPointerEnter(PointerEventData eventData)
{
print("enter");
}
public void OnPointerExit(PointerEventData eventData)
{
print("exit");
}
}