prefabUILine为Image的预制作
代码
using UnityEngine;
public class UILineFactory : MonoBehaviour
{
public RectTransform rtUIParent;
public GameObject prefabUILine;
void Start()
{
Vector2 startPosition = new Vector2(rtUIParent.rect.width * 0.2f, rtUIParent.rect.height * 0.2f);
Vector2 endPosition = new Vector2(rtUIParent.rect.width * 0.8f, rtUIParent.rect.height * 0.5f);
CreateLine(startPosition, endPosition);
}
void CreateLine(Vector2 startPosition, Vector2 endPosition)
{
GameObject line = Instantiate(prefabUILine);
line.name = "UILine";
line.transform.SetParent(rtUIParent.transform);
var heading = endPosition - startPosition;
var distance = heading.magnitude;
var direction = heading / distance;
RectTransform rtLine = line.GetComponent();
//对齐左下角
rtLine.anchorMin = Vector2.zero;
rtLine.anchorMax = Vector2.zero;
//计算线条位置
Vector2 centerPos = new Vector2(startPosition.x + endPosition.x, startPosition.y + endPosition.y) / 2;
rtLine.anchoredPosition = centerPos;
//计算线条角度
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
line.transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
//yf th
rtLine.sizeDelta = new Vector2(distance, 5.0f);
}
}