您当前的位置: 首页 >  unity

程序员正茂

暂无认证

  • 3浏览

    0关注

    283博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity在UI上绘制直线

程序员正茂 发布时间:2021-06-24 12:52:54 ,浏览量:3

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

 

关注
打赏
1660743125
查看更多评论
立即登录/注册

微信扫码登录

0.0406s