From 973edc44a04dceb8b48a32ca912e6167f86189d4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 25 八月 2025 17:38:02 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/Component/UI/Common/DragItem.cs | 154 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 106 insertions(+), 48 deletions(-)
diff --git a/Main/Component/UI/Common/DragItem.cs b/Main/Component/UI/Common/DragItem.cs
index 0e6f8da..7ba9652 100644
--- a/Main/Component/UI/Common/DragItem.cs
+++ b/Main/Component/UI/Common/DragItem.cs
@@ -1,61 +1,119 @@
-锘�//--------------------------------------------------------
-// [Author]: 绗簩涓栫晫
+//--------------------------------------------------------
+// [Author]: 鐜╀釜娓告垙
// [ Date ]: Monday, July 31, 2017
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;
+using UnityEngine.Events;
-namespace vnxbqy.UI {
+/// <summary>
+/// 鎷栨嫿缁勪欢锛屽疄鐜版嫋鎷藉姛鑳藉苟闄愬埗鎷栨嫿鑼冨洿
+/// </summary>
+public class DragItem:MonoBehaviour,ICanvasRaycastFilter,IBeginDragHandler,IDragHandler,IEndDragHandler
+{
+ [SerializeField] public Canvas parentCanvas;
+ [SerializeField] public Canvas canvas;
+ // 鎷栨嫿鍖哄煙闄愬埗
+ [SerializeField]
+ RectTransform m_Area;
+ public RectTransform area { get { return m_Area; } }
- public class DragItem:MonoBehaviour,ICanvasRaycastFilter,IBeginDragHandler,IDragHandler,IEndDragHandler {
-
- [SerializeField]
- RectTransform m_Area;
- public RectTransform area { get { return m_Area; } }
-
- [SerializeField]
- bool m_RaycastTarget = true;
- public bool raycastTarget {
- get { return m_RaycastTarget; }
- private set { m_RaycastTarget = value; }
- }
-
- RectTransform m_RectTransform;
- public RectTransform rectTransform { get { return this.transform as RectTransform; } }
-
- public void OnBeginDrag(PointerEventData eventData) {
- raycastTarget = false;
- this.transform.position = UIUtility.ClampWorldPosition(area,eventData);
- }
-
- public void OnDrag(PointerEventData eventData) {
- this.transform.position = UIUtility.ClampWorldPosition(area,eventData);
- }
-
- public void OnEndDrag(PointerEventData eventData) {
- raycastTarget = true;
- if(eventData.pointerEnter == null) {
- return;
- }
-
- var container = eventData.pointerEnter.GetComponent<DragContainer>();
- if(container == null) {
- return;
- }
-
- var contain = UIUtility.RectTransformContain(eventData.pointerEnter.transform as RectTransform,rectTransform);
- if(contain) {
- rectTransform.position = eventData.pointerEnter.transform.position;
- }
- }
-
- public bool IsRaycastLocationValid(Vector2 sp,Camera eventCamera) {
- return raycastTarget;
- }
+ // 鏄惁鍏佽灏勭嚎妫�娴�
+ [SerializeField]
+ bool m_RaycastTarget = true;
+ public bool raycastTarget {
+ get { return m_RaycastTarget; }
+ private set { m_RaycastTarget = value; }
}
+ [NonSerialized] public int pos;
+
+ private DragContainer lastTransform;
+
+ // 褰撳墠瀵硅薄鐨凴ectTransform缁勪欢
+ RectTransform rectTransform { get { return this.transform as RectTransform; } }
+
+
+ /// <summary>
+ /// 寮�濮嬫嫋鎷芥椂璋冪敤
+ /// </summary>
+ public void OnBeginDrag(PointerEventData eventData)
+ {
+ raycastTarget = false;
+ this.transform.position = UIUtility.ClampWorldPosition(area, eventData);
+ rectTransform.localScale = Vector3.one * 1.2f;
+
+ canvas.sortingLayerID = parentCanvas.sortingLayerID;
+ canvas.sortingOrder = parentCanvas.sortingOrder + pos + 10;
+ }
+
+ /// <summary>
+ /// 鎷栨嫿杩囩▼涓皟鐢�
+ /// </summary>
+ public void OnDrag(PointerEventData eventData) {
+ this.transform.position = UIUtility.ClampWorldPosition(area,eventData);
+
+ // 妫�娴嬫槸鍚﹁繘鍏ョ洰鏍囧尯鍩�
+ if (eventData.pointerEnter != null)
+ {
+ if (lastTransform != null && lastTransform != eventData.pointerEnter.GetComponent<DragContainer>())
+ {
+ lastTransform.mainTransform.localScale = Vector3.one;
+ lastTransform = null;
+ }
+ var target = eventData.pointerEnter.GetComponent<DragContainer>();
+ // 杈撳嚭缁勪欢璺緞
+ if (target != null)
+ {
+ lastTransform = target;
+ // 杩涘叆鐩爣鍖哄煙锛屾斁澶� 1.2 鍊�
+ lastTransform.mainTransform.localScale = Vector3.one * 1.2f;
+ }
+ }
+ rectTransform.localScale = Vector3.one * 1.2f;
+ }
+
+ /// <summary>
+ /// 缁撴潫鎷栨嫿鏃惰皟鐢�
+ /// </summary>
+ public Action<int, int> onEndDragEvent;
+
+ public void OnEndDrag(PointerEventData eventData)
+ {
+ raycastTarget = true;
+ rectTransform.localScale = Vector3.one;
+
+ if (lastTransform != null)
+ {
+ lastTransform.mainTransform.localScale = Vector3.one;
+ lastTransform = null;
+ }
+
+ if (eventData.pointerEnter == null)
+ {
+ onEndDragEvent?.Invoke(pos, -1);
+ return;
+ }
+
+ var container = eventData.pointerEnter.GetComponent<DragContainer>();
+ if (container == null)
+ {
+ onEndDragEvent?.Invoke(pos, -1);
+ return;
+ }
+ onEndDragEvent?.Invoke(pos, container.pos);
+ canvas.sortingLayerID = parentCanvas.sortingLayerID;
+ canvas.sortingOrder = parentCanvas.sortingOrder + pos + 1;
+ }
+
+ /// <summary>
+ /// 鍒ゆ柇灏勭嚎妫�娴嬫槸鍚︽湁鏁�
+ /// </summary>
+ public bool IsRaycastLocationValid(Vector2 sp,Camera eventCamera) {
+ return raycastTarget;
+ }
}
--
Gitblit v1.8.0