背包系统必不可缺的4个接口类,需实现的拖动,以及交换物品等都需要用到这四个接口类。
1、IInitializePotentialDragHandler
2、IBeginDragHandler
3、IDragHandler
4、IEndDragHandler
实现类必须继承4个接口,并重写其方法
public class bags : MonoBehaviour,IInitializePotentialDragHandler,IBeginDragHandler,IDragHandler, IEndDragHandler
public void OnInitializePotentialDrag(PointerEventData eventData)
{
print(111);
}
public void OnBeginDrag(PointerEventData eventData)
{
print(222);
}
public void OnDrag(PointerEventData eventData)
{
print(333);
}
public void OnEndDrag(PointerEventData eventData)
{
print(444);
}
这里详细的说一下我对着四个接口实现的方法,的含义。
void OnInitializePotentialDrag(PointerEventData eventData)方法:
它是鼠标点击到目标的一瞬间所实现的方法
void OnBeginDrag(PointerEventData eventData)方法:
它是你拖动目标那一帧所调用的方法
void OnDrag(PointerEventData eventData)方法:
它是你拖动目标时所调用的方法,如果你在拖动的过程中,按住左键不动的时候,这个方法不会实现,只有拖动时才能调用该方法。
void OnEndDrag(PointerEventData eventData)方法:
它是你松开鼠标的那一帧调用的方法。
void OnInitializePotentialDrag(PointerEventData eventData)
大家都能发现4个方法的参数都是PointerEventData eventData,而着4个参数代表的内容也是一样的,这里我的理解是:eventData就是鼠标点击的对象,也就是鼠标事件。这里举一个很简单的例子吧。
public class ChangePicture : MonoBehaviour,IInitializePotentialDragHandler, IBeginDragHandler, IDragHandler, IEndDragHandler
{
private Image pictures;
private Image img;
public void OnInitializePotentialDrag(PointerEventData eventData)
{
//判断点击对象
if (eventData.pointerEnter.gameObject)
{
//获取点击对象的Image组件,去进行图片切换
img = eventData.pointerEnter.gameObject.GetComponent<Image>();
pictures.sprite = img.sprite;//图片切换
}
}
public void OnBeginDrag(PointerEventData eventData)
{
print(222);
}
public void OnDrag(PointerEventData eventData)
{
print(333);
}
public void OnEndDrag(PointerEventData eventData)
{
print(44);
}
// Start is called before the first frame update
void Start()
{
pictures = GameObject.Find("phone").GetComponent<Image>();
}
// Update is called once per frame
void Update()
{
}
}
if (eventData.pointerEnter.gameObject)
{
img = eventData.pointerEnter.gameObject.GetComponent<Image>();
pictures.sprite = img.sprite;
}
这个 if 判断呢就是很典型的例子,他会根据你点击的对象,去切换图片。
当你点击第一个宝石的时候,左边的白色图片就会切换为宝石
同理,点击俩个丹药时,就会切换为丹药
所以这里方法里面的参数所对应的就是点击对象。