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); }