Files
JJBB/Assets/Project/Script/GUI/Guide/LockPanelHandleCtr.cs
2024-08-23 15:49:34 +08:00

71 lines
1.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class LockPanelHandleCtr : MonoBehaviour, IPointerDownHandler
{
public RectTransform _SelfRec;
public RectTransform _BGRec; //用背景尺寸计算
public GameObject _DescText;
private float _MaxAnchoredVal = 0;
private float _MistakeVal = 0.5f; //误差距离
private void GetMaxAnchoredVal()
{
_MaxAnchoredVal = _BGRec.rect.width - gameObject.GetComponent<Image>().rectTransform.rect.width - _MistakeVal;
}
private void OnEnable()
{
Reset();
GetMaxAnchoredVal();
}
private void Reset()
{
_SelfRec.anchoredPosition = new Vector2(0, 0);
_DescText.SetActive(true);
}
public void OnDrag(PointerEventData eventData)
{
if(_SelfRec.anchoredPosition.x >= _MaxAnchoredVal)
{
if (LockPanelCtr.Instance)
LockPanelCtr.Instance.OnUnLock();
}
else
{
_SelfRec.anchoredPosition = new Vector2(Mathf.Clamp(_SelfRec.anchoredPosition.x + eventData.delta.x, 0, _MaxAnchoredVal), 0);
if(_DescText.activeInHierarchy)
_DescText.SetActive(false);
}
}
public void OnPointerUp(PointerEventData eventData)
{
if(_SelfRec.anchoredPosition.x >= _MaxAnchoredVal)
{
if (LockPanelCtr.Instance)
LockPanelCtr.Instance.OnUnLock();
}
else
{
Reset();
}
}
public void OnPointerDown(PointerEventData eventData)
{
if (LockPanelCtr.Instance)
LockPanelCtr.Instance.OnUnLock();
return;
}
}