unity UGUI画线(Image方式)

发布于:2024-06-24 ⋅ 阅读:(88) ⋅ 点赞:(0)
		/// <summary>
		/// 画线
		/// 注意:startPoint和endPoint,须和lineTransform在同一路径层级下的位置关系!!!
		/// </summary>
		/// <param name="self"></param>
		/// <param name="lineTransform">LineImg RectTransform <param>
		/// <param name="startPoint"></param>
		/// <param name="endPoint"></param>
		/// <param name="lineColor"></param>
		/// <param name="lineWidth"></param>
		private void DrawLine(RectTransform lineTransform, Vector2 startPoint, Vector2 endPoint, Color lineColor, float lineWidth = 5f)
        {
            Log.Debug($"startPoint.x:{startPoint.x}; startPoint.y:{startPoint.y}; endPoint.x:{endPoint.x}; endPoint.y:{endPoint.y}");

            // 计算线条的方向和长度
            Vector2 direction = endPoint - startPoint;
            float length = direction.magnitude;

            // 如果长度为0,则不绘制线条
            if (length == 0) return;

            // 标准化方向向量
            Vector2 normalizedDirection = direction.normalized;

            // 设置线条的RectTransform属性
            float angle = Mathf.Atan2(normalizedDirection.y, normalizedDirection.x) * Mathf.Rad2Deg;
            lineTransform.localRotation = Quaternion.AngleAxis(angle, Vector3.forward);
            lineTransform.sizeDelta = new Vector2(length, lineWidth);
            lineTransform.anchoredPosition = startPoint + normalizedDirection * length * 0.5f; // 将线条中心放在起始点

            // 设置线条颜色
            lineTransform.gameObject.GetComponent<Image>().color = lineColor;
        }

网站公告

今日签到

点亮在社区的每一天
去签到