首先,要对image加上EventTrigger组件
具体如下:
var self = _image.gameObject.AddComponent<EventTrigger>();
self.triggers = new List<EventTrigger.Entry>(3)
{
new EventTrigger.Entry()
{
eventID = EventTriggerType.BeginDrag,
callback = new EventTrigger.TriggerEvent()
},
new EventTrigger.Entry()
{
eventID = EventTriggerType.Drag,
callback = new EventTrigger.TriggerEvent()
},
new EventTrigger.Entry()
{
eventID = EventTriggerType.EndDrag,
callback = new EventTrigger.TriggerEvent()
}
};
//开始拖拽
self.triggers[0].callback.AddListener((d) =>
{
objDrag = Instantiate(self.gameObject, self.transform.parent);
objDrag.GetComponent<Image>().raycastTarget = false;
});
//拖拽中
self.triggers[1].callback.AddListener((d) =>
{
if (objDrag != null)
{
Vector3 pos;
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(panel, Input.mousePosition, UICamera,out pos))
{
objDrag.transform.position = pos;
}
}
});
//拖拽结束
self.triggers[2].callback.AddListener((d) =>
{
});
对移入移出,点击 做同样的操作方式即可。
这种方式比较适合生成预制体不挂代码情况下。