[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("自适应锚点成功!");
}

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

Unity3D的UGUI布局锚点自动绑定关系的更多相关文章

  1. Unity ugui Anchor锚点自动适配画布中的相对位置

    本随笔参考了以下博客,在此基础上进行优化和改进: https://blog.csdn.net/qq_39640124/article/details/88284191 ugui中的Anchor预设如下 ...

  2. 基于MVC4+EasyUI的Web开发框架经验总结(17)--布局和对话框自动适应大小的处理

    在我自己的<Web开发框架>中,用了很多年的EasyUI,最新版本EasyUI为1.4.5,随着版本的更新,其很多功能得到了很大的完善和提高,同时也扩展了一些新的功能,以前在布局和对话框弹 ...

  3. 最新iOS 6 in Xcode4.5新特性——Storyboard和属性自动绑定

    最新iOS 6 in Xcode4.5新特性编程之二(上)——Storyboard和属性自动绑定 从Xcode 4.3开始,Storyboard 就是iOS 5和iOS 6中令人兴奋的一个新特性,他将 ...

  4. 一个完全摆脱findViewById的自动绑定库

    代码地址如下:http://www.demodashi.com/demo/13504.html 问题 先来看一个正常的写法: <?xml version="1.0" enco ...

  5. Unity3D中uGUI事件系统简述及使用方法总结

    Unity3D的uGUI系统的将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值.如下图所示: 先以PointerClick为例.这个是用于某点点击事件.其他事件都可 ...

  6. FlexiGrid 使用 全选、自动绑定

    1.介绍 Flexigrid是一个类似于Ext Gird,但基于jQuery开发的Grid.它具有的功能包括:可以调整列宽,合并列标题,分页,排序,显示/隐藏表格等.Flexigrid显示的数据能够通 ...

  7. WinForm开发-界面控件到实体,实体到界面控件自动绑定

    在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦.有没有像Web中那样方便的方法直接就自动 ...

  8. php 自动绑定di容器实现

    <?php class Bim { public function doSth() { echo __METHOD__.PHP_EOL; } } class Bar { protected $b ...

  9. paip.提升效率---request自动绑定domain object

    paip.提升效率---request自动绑定domain object #.keyword,subtitle关键字,子标题 ------------------------- 复制request属性 ...

随机推荐

  1. Python常见报错 - 使用openpyxl模块时出现错误: zipfile.BadZipFile: File is not a zip file

    背景 在pycharm项目下,有一个data.xlsx,主要用来存放接口测试用例数据的 要通过openpyxl库去读取data.xlsx,方法: openpyxl.load_workbook(path ...

  2. Bat 脚本 删除某一行

    findstr /v /i /c:"kiwi" /c:"oranges" myfile.txt >newfile.txt

  3. 如何使用Markdown 编写文档

    Markdown 是一种轻量级标记语言,用来编写文本文档,一般后缀名为.md.该语言在 2004 由约翰·格鲁伯(John Gruber)创建. 由于Markdown 语法简单,易读易写,变得越来越通 ...

  4. Java中的小数运算与精度损失

    float.double类型的问题 我们都知道,计算机是使用二进制存储数据的.而平常生活中,大多数情况下我们都是使用的十进制,因此计算机显示给我们看的内容大多数也是十进制的,这就使得很多时候数据需要在 ...

  5. 小白的MyBatis逆向工程

    MyBatis逆向工程   MyBatis逆向工程,简称MBG.是一个专门为MyBatis框架使用者定制的代码生成器. 可以快速的根据数据库表生成对应的映射文件,接口,以及Bean类对象. 在Myba ...

  6. 【Linux常见命令】tee命令

    tee - read from standard input and write to standard output and files tee命令用于读取标准输入的数据,并将其内容输出成文件. t ...

  7. FastReport.Net中使用列表和数组作为报表数据源

    大多数现代报告工具允许您使用几乎任何数据库,然而,并不是所有报表工具都能以一个数据源的列表或数组来工作.本文中将展示如何使用FastReport .Net报表工具来实现. 请注意以下重要几点: 清单中 ...

  8. 树的最小支配集 E - Cell Phone Network POJ - 3659 E. Tree with Small Distances

    E - Cell Phone Network POJ - 3659 题目大意: 给你一棵树,放置灯塔,每一个节点可以覆盖的范围是这个节点的所有子节点和他的父亲节点,问要使得所有的节点被覆盖的最少灯塔数 ...

  9. JAVA设计模式之组合模式(composite)

    组合模式:树状结构专用模式 代码如下: package com.srr.dp.composite; import java.util.ArrayList; import java.util.List; ...

  10. 完了!CPU一味求快出事儿了!

    自我介绍 我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴. 我所在的一号车间里,除了负责执行指令的我,还有负责取指令的小A,负责分析指令的小胖和负责结 ...