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

 

posted on 2019-08-12 14:32  施琅水月  阅读(163)  评论(0编辑  收藏  举报

导航