推进度!

This commit is contained in:
SoulliesOfficial
2025-11-25 21:49:03 -05:00
parent f0c06f0337
commit ad4948207e
1068 changed files with 418853 additions and 1047 deletions

View File

@@ -0,0 +1,72 @@
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Splines;
using UnityEngine.UI;
namespace UI_Spline_Renderer.Example
{
public class DraggableSplinePointExample : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler
{
public UISplineRenderer uiSplineRenderer;
public Image myImage;
public int splineIndex;
public int knotIndex;
public Color connectedColor;
public bool isConnected;
BezierKnot _originalKnot;
/*
* You must set false of the raycastTarget value of the UISplineRenderer and Image of this gameObject OnBeginDrag().
* Because it can block the raycast going to a port that pointer hovered.
*/
public void OnDrag(PointerEventData eventData)
{
var pos = transform.parent.InverseTransformPoint(eventData.position);
var knot = new BezierKnot(pos);
uiSplineRenderer.splineContainer[splineIndex].SetKnot(knotIndex, knot);
}
public void OnBeginDrag(PointerEventData eventData)
{
uiSplineRenderer.raycastTarget = false;
myImage.raycastTarget = false;
uiSplineRenderer.color = Color.white;
if(!isConnected)_originalKnot = uiSplineRenderer.splineContainer[splineIndex][knotIndex];
}
public void OnEndDrag(PointerEventData eventData)
{
foreach (var go in eventData.hovered)
{
if (go.GetComponent<DragPortExample>())
{
Connect(go.transform);
uiSplineRenderer.raycastTarget = true;
myImage.raycastTarget = true;
return;
}
}
Disconnect();
}
void Connect(Transform t)
{
var pos = transform.parent.InverseTransformPoint(t.position);
var knot = new BezierKnot(pos);
uiSplineRenderer.splineContainer[splineIndex].SetKnot(knotIndex, knot);
uiSplineRenderer.color = connectedColor;
isConnected = true;
}
void Disconnect()
{
uiSplineRenderer.color = Color.white;
uiSplineRenderer.splineContainer[splineIndex].SetKnot(knotIndex, _originalKnot);
isConnected = false;
uiSplineRenderer.raycastTarget = true;
myImage.raycastTarget = true;
}
}
}