锚点盘蓝点

小蓝

看了几篇文章 不知道为什么运行效果不好 自己改



using UnityEditor;
using UnityEngine;

public class UISelectionAnchorPursueBluePoint 
{
    [MenuItem("Tools/AnchorPursueBluePoint _m")]
    public static void AutoRectAnior()
    {
        Debug.Log("[Tools]:锚点开始盘蓝点...");
        if (Selection.activeGameObject == null)
        {
            Debug.Log("[Tools]:未选择UI!!!");
            return;
        }
        
        //1获得当前设置UI=================================================================================
        RectTransform rectTransform = Selection.activeGameObject.GetComponent<RectTransform>();
       
        //2获取当前UI元素的四个蓝点的世界坐标=============================================================
        Vector3[] corners = new Vector3[4];
        rectTransform.GetWorldCorners(corners);
        // Debug.Log("儿子");
        // foreach (Vector3 VARIABLE in corners)
        // {
        //     Debug.Log(VARIABLE);
        // }
        
        //Debug.Log("父亲");
        //
         if (rectTransform.parent == null)
        {
            Debug.Log("[Tools]:父UI为空!!!");
            return;
        }
        //3获取其父亲的四个蓝点的世界坐标=====================================================================
        Vector3[] PCorners = new Vector3[4];
        RectTransform parentRectTransform = rectTransform.parent.GetComponent<RectTransform>();
        parentRectTransform.GetWorldCorners(PCorners);
        // foreach (Vector3 VARIABLE in PCorners)
        // {
        //     Debug.Log(VARIABLE);
        // }
        //
        //4求出锚点的minx miny maxx maxy===================================================================
        float minx = (corners[1].x - PCorners[1].x) / (PCorners[2].x - PCorners[1].x);
        float maxx = (corners[2].x - PCorners[1].x) / (PCorners[2].x - PCorners[1].x);
        
        float miny = (corners[3].y - PCorners[3].y) / (PCorners[2].y - PCorners[3].y);
        float maxy = (corners[2].y - PCorners[3].y) / (PCorners[2].y - PCorners[3].y);
        
        //5设置锚点坐标=========================================================================================
        rectTransform.anchorMin=new Vector2(minx,miny);
        rectTransform.anchorMax=new Vector2(maxx,maxy);
        
        //6设置UI的相对距离====================================================================================
        rectTransform.offsetMax = new Vector2(0, 0);
        rectTransform.offsetMin = new Vector2(0, 0);
        
        
        Debug.Log("[Tools]:锚点缠绵了蓝点...");
        

    }

  
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值