From eb27e5fd31f73b998a4bbd85511a31e40b8c61b7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 十一月 2025 17:03:47 +0800
Subject: [PATCH] 0312 关闭游戏内日志
---
Main/Component/UI/Common/BoundedDrag.cs | 501 +++++++++++++++++++++++++++++--------------------------
1 files changed, 265 insertions(+), 236 deletions(-)
diff --git a/Main/Component/UI/Common/BoundedDrag.cs b/Main/Component/UI/Common/BoundedDrag.cs
index b926f29..69f4a8e 100644
--- a/Main/Component/UI/Common/BoundedDrag.cs
+++ b/Main/Component/UI/Common/BoundedDrag.cs
@@ -10,241 +10,270 @@
using System;
- public class BoundedDrag : MonoBehaviour, IEndDragHandler, IBeginDragHandler, IDragHandler
- {
-
- [SerializeField]
- RectTransform m_Target;
- public RectTransform target {
- get { return m_Target; }
- set {
- m_Target = value;
- }
- }
-
- public RectTransform rectTransform { get { return this.transform as RectTransform; } }
-
- [SerializeField]
- ScaleRange m_ScaleRange;
- public ScaleRange scaleRange {
- get { return m_ScaleRange; }
- set { m_ScaleRange = value; }
- }
-
- [SerializeField]
- float m_DefaultScale;
- public float defaultScale { get { return m_DefaultScale; } }
-
- [SerializeField]
- float m_DestScale = 1f;
- public float destScale {
- get { return m_DestScale; }
- set { m_DestScale = Mathf.Clamp(value, scaleRange.min, scaleRange.max); }
- }
-
- float refScale = 0f;
-
- public float currentScale {
- get {
- return target.localScale.x;
- }
- set {
- target.localScale = Vector3.one * Mathf.Clamp(value, scaleRange.min, scaleRange.max);
- }
- }
-
- [SerializeField]
- MoveArea m_MoveArea;
- public MoveArea moveArea {
- get { return m_MoveArea; }
- set { m_MoveArea = value; }
- }
-
- [SerializeField]
- Vector2 m_DestPosition = Vector2.zero;
- public Vector2 destPosition {
- get { return m_DestPosition; }
- set { m_DestPosition = new Vector2(Mathf.Clamp(value.x, moveArea.Left * destScale, moveArea.Right * destScale), Mathf.Clamp(value.y, moveArea.Bottom * destScale, moveArea.Top * destScale)); }
- }
-
- Vector3 refPosition = Vector3.zero;
-
- public Vector2 currentPosition {
- get { return target.anchoredPosition; }
- set { target.anchoredPosition = value; }
- }
-
- Vector2 startTouchPosition01;
- Vector2 startGroundPosition;
-
- Vector2 lastTouchPosition01;
- Vector2 curTouchPosition01;
- Vector2 lastTouchPosition02;
- Vector2 curTouchPosition02;
-
- [SerializeField]
- Action m_OnBeginDrag;
- public Action onBeginDrag {
- get { return m_OnBeginDrag; }
- }
-
- bool m_Actionable = true;
- public bool actionable {
- get { return m_Actionable; }
- set { m_Actionable = value; }
- }
-
- private void OnEnable()
- {
- destPosition = currentPosition = Vector3.zero;
- }
-
- public void OnBeginDrag(PointerEventData eventData)
- {
-
-#if UNITY_EDITOR || UNITY_STANDALONE
- if (Input.GetKey(KeyCode.LeftControl) && eventData.button == PointerEventData.InputButton.Left)
- {
- TwoFingerHandleBegin();
- }
- else if (eventData.button == PointerEventData.InputButton.Left)
- {
- OneFingerHandleBegin(eventData);
- }
-#else
- if (Input.touchCount == 2) {
- TwoFingerHandleBegin();
- }
- if (Input.touchCount == 1) {
- OneFingerHandleBegin(eventData);
- }
-#endif
- onBeginDrag?.Invoke();
- }
-
- public void OnDrag(PointerEventData eventData)
- {
-#if UNITY_EDITOR || UNITY_STANDALONE
- if (Input.GetKey(KeyCode.LeftControl) && eventData.button == PointerEventData.InputButton.Left)
- {
- TwoFingerHandle();
- }
- else if (eventData.button == PointerEventData.InputButton.Left)
- {
- OneFingerHandle(eventData);
- }
-#else
- if (Input.touchCount == 2) {
- TwoFingerHandle();
- }
- if (Input.touchCount == 1) {
- OneFingerHandle(eventData);
- }
-#endif
- }
-
- public void OnEndDrag(PointerEventData eventData)
- {
- }
-
- void LateUpdate()
- {
- if (!actionable)
- {
- return;
- }
-
- if (Mathf.Abs(currentScale - destScale) > 0.01f)
- {
- float newScale = Mathf.SmoothDamp(currentScale, destScale, ref refScale, 0.15f);
- currentScale = newScale;
- }
-
- if (Vector2.Distance(currentPosition, destPosition) > 0.1f)
- {
- Vector2 newPosition = Vector3.SmoothDamp(currentPosition, destPosition, ref refPosition, 0.15f);
- currentPosition = newPosition;
- }
- }
-
- private void OneFingerHandleBegin(PointerEventData eventData)
- {
- startTouchPosition01 = Vector2.zero;
- RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, eventData.position, eventData.pressEventCamera, out startTouchPosition01);
- startGroundPosition = currentPosition;
-
- }
-
- private void OneFingerHandle(PointerEventData eventData)
- {
- Vector2 localMouse;
- if (RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, eventData.position, eventData.pressEventCamera, out localMouse))
- {
- var pointerDelta = localMouse - startTouchPosition01;
- destPosition = startGroundPosition + pointerDelta;
- }
- }
-
- private void TwoFingerHandle()
- {
- // 鏂逛究PC璋冭瘯閫昏緫
-#if UNITY_EDITOR || UNITY_STANDALONE
- curTouchPosition01 = new Vector2(Screen.width / 2, Screen.height / 2);
- curTouchPosition02 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
-#else
- Touch touchFirst = Input.touches[0];
- Touch touchSecond = Input.touches[1];
- curTouchPosition01 = touchFirst.position;
- curTouchPosition02 = touchSecond.position;
-#endif
-
- float lastLength = Vector2.Distance(lastTouchPosition01, lastTouchPosition02);
- float curLength = Vector2.Distance(curTouchPosition01, curTouchPosition02);
- destScale *= curLength / Mathf.Clamp(lastLength, 1, float.MaxValue);
-
- lastTouchPosition01 = curTouchPosition01;
- lastTouchPosition02 = curTouchPosition02;
- }
-
- private void TwoFingerHandleBegin()
- {
- // 鏂逛究PC璋冭瘯閫昏緫
-#if UNITY_EDITOR || UNITY_STANDALONE
- curTouchPosition01 = new Vector2(Screen.width / 2, Screen.height / 2);
- curTouchPosition02 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
-#else
- Touch touchFirst = Input.touches[0];
- Touch touchSecond = Input.touches[1];
- curTouchPosition01 = touchFirst.position;
- curTouchPosition02 = touchSecond.position;
-#endif
-
- lastTouchPosition01 = curTouchPosition01;
- lastTouchPosition02 = curTouchPosition02;
- }
-
- [Serializable]
- public struct ScaleRange
- {
- public float min;
- public float max;
- }
-
- [Serializable]
- public struct MoveArea
- {
- public float Left;
- public float Right;
- public float Top;
- public float Bottom;
-
- public MoveArea(float _left, float _right, float _top, float _bottom)
- {
- this.Left = _left;
- this.Right = _right;
- this.Top = _top;
- this.Bottom = _bottom;
- }
-
+/// <summary>
+/// 瀹炵幇鎷栨嫿鍜岀缉鏀惧姛鑳界殑缁勪欢锛屾敮鎸佸崟鎸囨嫋鎷藉拰鍙屾寚缂╂斁銆�
+/// </summary>
+public class BoundedDrag : MonoBehaviour, IEndDragHandler, IBeginDragHandler, IDragHandler
+{
+ [SerializeField]
+ RectTransform m_Target; // 鎷栨嫿鐨勭洰鏍囧璞�
+ public RectTransform target {
+ get { return m_Target; }
+ set {
+ m_Target = value;
}
}
+
+ public RectTransform rectTransform { get { return this.transform as RectTransform; } }
+
+ [SerializeField]
+ ScaleRange m_ScaleRange; // 缂╂斁鑼冨洿
+ public ScaleRange scaleRange {
+ get { return m_ScaleRange; }
+ set { m_ScaleRange = value; }
+ }
+
+ [SerializeField]
+ float m_DefaultScale; // 榛樿缂╂斁鍊�
+ public float defaultScale { get { return m_DefaultScale; } }
+
+ [SerializeField]
+ float m_DestScale = 1f; // 鐩爣缂╂斁鍊�
+ public float destScale {
+ get { return m_DestScale; }
+ set { m_DestScale = Mathf.Clamp(value, scaleRange.min, scaleRange.max); }
+ }
+
+ float refScale = 0f; // 鐢ㄤ簬骞虫粦缂╂斁鐨勫弬鑰冨��
+
+ public float currentScale {
+ get {
+ return target.localScale.x;
+ }
+ set {
+ target.localScale = Vector3.one * Mathf.Clamp(value, scaleRange.min, scaleRange.max);
+ }
+ }
+
+ [SerializeField]
+ MoveArea m_MoveArea; // 鎷栨嫿鐨勮竟鐣屽尯鍩�
+ public MoveArea moveArea {
+ get { return m_MoveArea; }
+ set { m_MoveArea = value; }
+ }
+
+ [SerializeField]
+ Vector2 m_DestPosition = Vector2.zero; // 鐩爣浣嶇疆
+ public Vector2 destPosition {
+ get { return m_DestPosition; }
+ set { m_DestPosition = new Vector2(Mathf.Clamp(value.x, moveArea.Left * destScale, moveArea.Right * destScale), Mathf.Clamp(value.y, moveArea.Bottom * destScale, moveArea.Top * destScale)); }
+ }
+
+ Vector3 refPosition = Vector3.zero; // 鐢ㄤ簬骞虫粦绉诲姩鐨勫弬鑰冨��
+
+ public Vector2 currentPosition {
+ get { return target.anchoredPosition; }
+ set { target.anchoredPosition = value; }
+ }
+
+ Vector2 startTouchPosition01; // 鍗曟寚鎷栨嫿鐨勮捣濮嬭Е鎽镐綅缃�
+ Vector2 startGroundPosition; // 鍗曟寚鎷栨嫿鐨勮捣濮嬪湴闈綅缃�
+
+ Vector2 lastTouchPosition01; // 鍙屾寚缂╂斁鐨勪笂涓�甯цЕ鎽镐綅缃�1
+ Vector2 curTouchPosition01; // 鍙屾寚缂╂斁鐨勫綋鍓嶅抚瑙︽懜浣嶇疆1
+ Vector2 lastTouchPosition02; // 鍙屾寚缂╂斁鐨勪笂涓�甯цЕ鎽镐綅缃�2
+ Vector2 curTouchPosition02; // 鍙屾寚缂╂斁鐨勫綋鍓嶅抚瑙︽懜浣嶇疆2
+
+ [SerializeField]
+ Action m_OnBeginDrag; // 鎷栨嫿寮�濮嬩簨浠�
+ public Action onBeginDrag {
+ get { return m_OnBeginDrag; }
+ }
+
+ bool m_Actionable = true; // 鏄惁鍙搷浣�
+ public bool actionable {
+ get { return m_Actionable; }
+ set { m_Actionable = value; }
+ }
+
+ private void OnEnable()
+ {
+ destPosition = currentPosition = Vector3.zero; // 鍒濆鍖栦綅缃�
+ }
+
+ /// <summary>
+ /// 鎷栨嫿寮�濮嬩簨浠跺鐞�
+ /// </summary>
+ public void OnBeginDrag(PointerEventData eventData)
+ {
+#if UNITY_EDITOR || UNITY_STANDALONE
+ if (Input.GetKey(KeyCode.LeftControl) && eventData.button == PointerEventData.InputButton.Left)
+ {
+ TwoFingerHandleBegin(); // 鍙屾寚缂╂斁寮�濮�
+ }
+ else if (eventData.button == PointerEventData.InputButton.Left)
+ {
+ OneFingerHandleBegin(eventData); // 鍗曟寚鎷栨嫿寮�濮�
+ }
+#else
+ if (Input.touchCount == 2) {
+ TwoFingerHandleBegin();
+ }
+ if (Input.touchCount == 1) {
+ OneFingerHandleBegin(eventData);
+ }
+#endif
+ onBeginDrag?.Invoke(); // 瑙﹀彂鎷栨嫿寮�濮嬩簨浠�
+ }
+
+ /// <summary>
+ /// 鎷栨嫿杩囩▼涓殑浜嬩欢澶勭悊
+ /// </summary>
+ public void OnDrag(PointerEventData eventData)
+ {
+#if UNITY_EDITOR || UNITY_STANDALONE
+ if (Input.GetKey(KeyCode.LeftControl) && eventData.button == PointerEventData.InputButton.Left)
+ {
+ TwoFingerHandle(); // 鍙屾寚缂╂斁
+ }
+ else if (eventData.button == PointerEventData.InputButton.Left)
+ {
+ OneFingerHandle(eventData); // 鍗曟寚鎷栨嫿
+ }
+#else
+ if (Input.touchCount == 2) {
+ TwoFingerHandle();
+ }
+ if (Input.touchCount == 1) {
+ OneFingerHandle(eventData);
+ }
+#endif
+ }
+
+ /// <summary>
+ /// 鎷栨嫿缁撴潫浜嬩欢澶勭悊
+ /// </summary>
+ public void OnEndDrag(PointerEventData eventData)
+ {
+ }
+
+ /// <summary>
+ /// 姣忓抚鏇存柊锛屽钩婊戝鐞嗙缉鏀惧拰浣嶇疆
+ /// </summary>
+ void LateUpdate()
+ {
+ if (!actionable)
+ {
+ return;
+ }
+
+ if (Mathf.Abs(currentScale - destScale) > 0.01f)
+ {
+ float newScale = Mathf.SmoothDamp(currentScale, destScale, ref refScale, 0.15f);
+ currentScale = newScale;
+ }
+
+ if (Vector2.Distance(currentPosition, destPosition) > 0.1f)
+ {
+ Vector2 newPosition = Vector3.SmoothDamp(currentPosition, destPosition, ref refPosition, 0.15f);
+ currentPosition = newPosition;
+ }
+ }
+
+ /// <summary>
+ /// 鍗曟寚鎷栨嫿寮�濮�
+ /// </summary>
+ private void OneFingerHandleBegin(PointerEventData eventData)
+ {
+ startTouchPosition01 = Vector2.zero;
+ RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, eventData.position, eventData.pressEventCamera, out startTouchPosition01);
+ startGroundPosition = currentPosition;
+ }
+
+ /// <summary>
+ /// 鍗曟寚鎷栨嫿澶勭悊
+ /// </summary>
+ private void OneFingerHandle(PointerEventData eventData)
+ {
+ Vector2 localMouse;
+ if (RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, eventData.position, eventData.pressEventCamera, out localMouse))
+ {
+ var pointerDelta = localMouse - startTouchPosition01;
+ destPosition = startGroundPosition + pointerDelta;
+ }
+ }
+
+ /// <summary>
+ /// 鍙屾寚缂╂斁澶勭悊
+ /// </summary>
+ private void TwoFingerHandle()
+ {
+ // 鏂逛究PC璋冭瘯閫昏緫
+#if UNITY_EDITOR || UNITY_STANDALONE
+ curTouchPosition01 = new Vector2(Screen.width / 2, Screen.height / 2);
+ curTouchPosition02 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
+#else
+ Touch touchFirst = Input.touches[0];
+ Touch touchSecond = Input.touches[1];
+ curTouchPosition01 = touchFirst.position;
+ curTouchPosition02 = touchSecond.position;
+#endif
+
+ float lastLength = Vector2.Distance(lastTouchPosition01, lastTouchPosition02);
+ float curLength = Vector2.Distance(curTouchPosition01, curTouchPosition02);
+ destScale *= curLength / Mathf.Clamp(lastLength, 1, float.MaxValue);
+
+ lastTouchPosition01 = curTouchPosition01;
+ lastTouchPosition02 = curTouchPosition02;
+ }
+
+ /// <summary>
+ /// 鍙屾寚缂╂斁寮�濮�
+ /// </summary>
+ private void TwoFingerHandleBegin()
+ {
+ // 鏂逛究PC璋冭瘯閫昏緫
+#if UNITY_EDITOR || UNITY_STANDALONE
+ curTouchPosition01 = new Vector2(Screen.width / 2, Screen.height / 2);
+ curTouchPosition02 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
+#else
+ Touch touchFirst = Input.touches[0];
+ Touch touchSecond = Input.touches[1];
+ curTouchPosition01 = touchFirst.position;
+ curTouchPosition02 = touchSecond.position;
+#endif
+
+ lastTouchPosition01 = curTouchPosition01;
+ lastTouchPosition02 = curTouchPosition02;
+ }
+
+ /// <summary>
+ /// 缂╂斁鑼冨洿缁撴瀯浣�
+ /// </summary>
+ [Serializable]
+ public struct ScaleRange
+ {
+ public float min; // 鏈�灏忕缉鏀惧��
+ public float max; // 鏈�澶х缉鏀惧��
+ }
+
+ /// <summary>
+ /// 鎷栨嫿鍖哄煙缁撴瀯浣�
+ /// </summary>
+ [Serializable]
+ public struct MoveArea
+ {
+ public float Left; // 宸﹁竟鐣�
+ public float Right; // 鍙宠竟鐣�
+ public float Top; // 涓婅竟鐣�
+ public float Bottom; // 涓嬭竟鐣�
+
+ public MoveArea(float _left, float _right, float _top, float _bottom)
+ {
+ this.Left = _left;
+ this.Right = _right;
+ this.Top = _top;
+ this.Bottom = _bottom;
+ }
+ }
+}
--
Gitblit v1.8.0