using System.Collections.Generic; using UnityEngine; public class UIDrawLine : MonoBehaviour { private List<RectTransform> _lineRect = new List<RectTransform>(); private Transform _lines; // 绘制连线 private void CreateLine() { for (int i = 0; i < _lineRect.Count; i++) { if (i == _lineRect.Count - 1) return; Vector2 lineStart = _lineRect[i].anchoredPosition; Vector2 lineEnd = _lineRect[i + 1].anchoredPosition; GameObject line = PoolManager.instance.getItem("LiveCenterWindow", AssetBundleType.UI, "Line"); line.SetActive(true); line.transform.SetParent(_lines); line.transform.localScale = Vector3.one; line.transform.SetSiblingIndex(0); // Adjust height to proper sizing RectTransform rectTrans = line.GetComponent<RectTransform>(); float tempHeight = Vector2.Distance(lineStart, lineEnd); rectTrans.sizeDelta = new Vector2(rectTrans.rect.width, tempHeight); // Adjust rotation and placement rectTrans.rotation = HelperRotate2D(lineStart, lineEnd); rectTrans.anchoredPosition = lineStart; } } private static Quaternion HelperRotate2D (Vector3 start, Vector3 end) { Vector3 diff = start - end; diff.Normalize(); float rotZ = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg; return Quaternion.Euler(0f, 0f, rotZ - 90f); } }
UI 绘制线条
最新推荐文章于 2024-09-17 17:25:47 发布