UI 绘制线条

本文介绍了一个Unity脚本,用于在游戏中动态创建并调整线条。该脚本通过一系列RectTransform位置,计算连线的起始和结束点,调整线条的高度和旋转,以实现精确的视觉效果。涉及池管理器的使用,确保资源的有效管理和重复利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值