zoukankan      html  css  js  c++  java
  • Unity3D的UGUI布局锚点自动绑定关系

      

    [MenuItem("CONTEXT/RectTransform/Auto")]
        public static void AutoRectAnior()
        {
            Debug.Log("自适应锚点");
            //获得当前设置UI
            RectTransform rect = Selection.activeGameObject.GetComponent<RectTransform>();
            //获取其父级
            RectTransform parent = rect.parent.GetComponent<RectTransform>();
            RectTransform canvas = rect.GetComponentInParent<Canvas>().GetComponent<RectTransform>();
            if (!rect || ! parent || !canvas)
            {
                Debug.Log("自适应锚点失败,缺少对象!");
                return;
            }
            Bounds rectBounds = RectTransformUtility.CalculateRelativeRectTransformBounds(canvas, rect);//计算src的包围盒
            Bounds parentBounds = RectTransformUtility.CalculateRelativeRectTransformBounds(canvas, parent);//计算tar的包围盒
    
            float cMinX = 0.5f, cMinY = 0.5f, cMaxX = 0.5f, cMaxY = 0.5f;
            //获取设置UI的宽和高
            float cWidth = rectBounds.size.x; //rect.sizeDelta.x * rect.localScale.x;
            float cHight = rectBounds.size.y;//rect.sizeDelta.y * rect.localScale.y;
            //获取设置UI父级的宽和高
            float pWidth = parentBounds.size.x;//parent.sizeDelta.x * parent.localScale.x;
            float pHight = parentBounds.size.y;//parent.sizeDelta.y * parent.localScale.y;
            //重新计算锚点位置
            cMinX = (pWidth / 2 - (cWidth * rect.pivot.x - rect.anchoredPosition.x)) / pWidth;
            cMinY = (pHight / 2 - (cHight * rect.pivot.y - rect.anchoredPosition.y)) / pHight;
            cMaxX = (pWidth / 2 + (cWidth * (1 - rect.pivot.x) + rect.anchoredPosition.x)) / pWidth;
            cMaxY = (pHight / 2 + (cHight * (1 - rect.pivot.y) + rect.anchoredPosition.y)) / pHight;
            //重新设置UI的锚点位置
            rect.anchorMin = new Vector2(cMinX, cMinY);
            rect.anchorMax = new Vector2(cMaxX, cMaxY);
            //设置UI的相对距离
            rect.offsetMax = new Vector2(0, 0);
            rect.offsetMin = new Vector2(0, 0);
    
            Debug.Log("自适应锚点成功!");
        }
    

      上述绑定代码未完善。。。后续完善

  • 相关阅读:
    d3操作svg路径动画,及dom移动
    新时代前端必备神器 Snapjs之弹动效果
    threejs 鼠标移动控制模型旋转
    玩转SVG线条动画
    CSS也能计算:calc
    CSS两种盒子模型:cntent-box和border-box
    解决Jquery中click里面包含click事件,出现重复执行的问题
    区块链踩坑之基础扫盲及搭建以太坊网络私有链(单节点)
    微信朋友圈转发第三方网站带缩略图实现
    物流一站式查询之快递100篇
  • 原文地址:https://www.cnblogs.com/lovewaits/p/7704335.html
Copyright © 2011-2022 走看看