曲线视觉编辑器,初步
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
namespace Michsky.MUIP
|
||||
{
|
||||
@@ -8,10 +9,11 @@ namespace Michsky.MUIP
|
||||
[Header("Resources")]
|
||||
public RectTransform dragArea;
|
||||
public RectTransform dragObject;
|
||||
public RectTransform draggerRect;
|
||||
|
||||
[Header("Settings")]
|
||||
public bool topOnDrag = true;
|
||||
|
||||
public bool Lock = false;
|
||||
private Vector2 originalLocalPointerPosition;
|
||||
private Vector3 originalPanelLocalPosition;
|
||||
|
||||
@@ -58,23 +60,29 @@ namespace Michsky.MUIP
|
||||
|
||||
public void OnBeginDrag(PointerEventData data)
|
||||
{
|
||||
originalPanelLocalPosition = DragObjectInternal.localPosition;
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(DragAreaInternal, data.position, data.pressEventCamera, out originalLocalPointerPosition);
|
||||
gameObject.transform.SetAsLastSibling();
|
||||
if (topOnDrag == true) { dragObject.transform.SetAsLastSibling(); }
|
||||
if (!Lock && (draggerRect == null || RectTransformUtility.RectangleContainsScreenPoint(GetComponent<RectTransform>(), Mouse.current.position.ReadValue())))
|
||||
{
|
||||
originalPanelLocalPosition = DragObjectInternal.localPosition;
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(DragAreaInternal, data.position, data.pressEventCamera, out originalLocalPointerPosition);
|
||||
gameObject.transform.SetAsLastSibling();
|
||||
if (topOnDrag == true) { dragObject.transform.SetAsLastSibling(); }
|
||||
}
|
||||
}
|
||||
|
||||
public void OnDrag(PointerEventData data)
|
||||
{
|
||||
Vector2 localPointerPosition;
|
||||
|
||||
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(DragAreaInternal, data.position, data.pressEventCamera, out localPointerPosition))
|
||||
if (!Lock && (draggerRect == null || RectTransformUtility.RectangleContainsScreenPoint(GetComponent<RectTransform>(), Mouse.current.position.ReadValue())))
|
||||
{
|
||||
Vector3 offsetToOriginal = localPointerPosition - originalLocalPointerPosition;
|
||||
DragObjectInternal.localPosition = originalPanelLocalPosition + offsetToOriginal;
|
||||
}
|
||||
Vector2 localPointerPosition;
|
||||
|
||||
ClampToArea();
|
||||
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(DragAreaInternal, data.position, data.pressEventCamera, out localPointerPosition))
|
||||
{
|
||||
Vector3 offsetToOriginal = localPointerPosition - originalLocalPointerPosition;
|
||||
DragObjectInternal.localPosition = originalPanelLocalPosition + offsetToOriginal;
|
||||
}
|
||||
|
||||
ClampToArea();
|
||||
}
|
||||
}
|
||||
|
||||
private void ClampToArea()
|
||||
|
||||
Reference in New Issue
Block a user