UGUI UI拖拽,UI连线。
1、拖拽
public class Item : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public RectTransform rt;
public void OnBeginDrag(PointerEventData eventData)
{
//RectTransformUtility.ScreenPointToLocalPointInRectangle(btn.GetComponent<RectTransform>(), eventData.position, Camera.main, null);
}
public void OnDrag(PointerEventData eventData)
{
Vector3 globalMousePos;
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rt, eventData.position, null, out globalMousePos))
{
rt.position = globalMousePos;
}
}
public void OnEndDrag(PointerEventData eventData)
{
}
/// <summary>
/// 更新UI的位置
/// </summary>
private void SetDraggedPosition(PointerEventData eventData)
{
Vector3 globalMousePos;
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rt, eventData.position, null, out globalMousePos))
{
rt.position = globalMousePos;
}
}
}
2、连线
private void Init(Transform mParent, Transform mChild) { Vector3 targetPos = mParent.localPosition; Vector3 curPos = mChild.localPosition; line.rectTransform.sizeDelta = new Vector2(8, Vector3.Distance(targetPos, curPos)); double angle = Math.Atan2(targetPos.y - curPos.y, targetPos.x - curPos.x) * 180 / Math.PI; line.transform.rotation = Quaternion.Euler(0, 0, (float)angle + 270); line.transform.localPosition = new Vector3((targetPos.x + curPos.x) / 2, (targetPos.y + curPos.y) / 2, targetPos.z); }
浙公网安备 33010602011771号