图片的拖拽与释放
图标的拖拽
逻辑分析
- 为了表示可以拖拽的图片,首先定义一个静态的图片DragImage
- 实际可以拖拽的图片,定义为另一个Image组件icon
- 当把图片拖拽到目标槽位DropSlot时,改变DropSlot下的DropImage.SourceImage=icon.SourceImage
- 拖拽是为了让图标跟随鼠标移动,需要实现一些响应鼠标拖拽的Unity
原理
拖
- 初始化:生成一个icon临时对象,专门来显示要拖拽的图片UI
- 开始拖:记录鼠标相对于icon的原点(pivot)的偏移
- 拖动中:设置icon的位置为鼠标光标位置
- 松开后:icon归位
放
通过事件参数取得放的GameObject,并进一步取得对应的图片Sprite和Color,设置给目标GameObject。
生成可拖拽的图片,并进行拖拽
public class MyDrag : MonoBehaviour,IBeginDragHandler,IDragHandler,IEndDragHandler
{
private GameObject m_icon;
private GameObject m_canvas;
private Vector3 m_offset;//
private void OnEnable()
{
//在DragImage的位置上创建一个相同的图片,起名icon
m_canvas = GameObject.Find("Canvas");
m_icon = new GameObject("icon");//在场景根节点下创建一个跟对象,并命名为icon
m_icon.transform.SetParent(m_canvas.transform,true);//将icon的节点设置在convas之下