Unity UGUI简单拖拽功能

📅 发布时间:2026/8/9 1:35:04
Unity UGUI简单拖拽功能 本功能的拖拽继承与EventTrigger由于是在lua中实现的功能所以需要导出EventTriggerListener脚本public class EventTriggerListener : UnityEngine.EventSystems.EventTriggerlua中调用的写法EventTriggerListener.Get(skillCloneItemGo).onBeginDrag self.OnStartDragSkillItem EventTriggerListener.Get(skillCloneItemGo).onDrag self.OnDragSkillItem EventTriggerListener.Get(skillCloneItemGo).onEndDrag self.OnEndDragSkillItem拖拽回调方法 function SkillTreeView:OnStartDragSkillItem(data) if this.move ~ true then this.move true this.DragImage UnityEngine.GameObject.Instantiate(ImageObj) this.DragTrans this.DragImage.transform:GetComponent(RectTransform) Transform_SetParent(this.DragImage.transform,data.pointerPress.transform) this.DragImage.gameObject:SetActive(true) -- 设置层级 local canvas this.DragImage.transform:GetComponent(Canvas) canvas.overrideSorting true canvas.sortingOrder this.Layer 1 end end function SkillTreeView:OnDragSkillItem(data) if this.move then if this.drag ~ true then this.drag true end -- 这里不是用position做基础偏移所以偏移值要除以屏幕缩放比例 (UnityEngine.Screen.width/1920) this.DragTrans.anchoredPosition this.DragTrans.anchoredPosition data.delta/(UnityEngine.Screen.width/1920) end end function SkillTreeView:OnEndDragSkillItem(data) if this.move false or this.drag false then return end this.move false this.drag false后面可以加拖拽以后的逻辑了。代码部分只是事例有些没有贴出来只是自己认为重要的逻辑写了出来欢迎批评指正。 自己的踩坑点就是如果用anchoredPosition 或者localPosition 就一定要考虑屏幕的缩放 如图