Unity UGUI Rect

  • rect.x与rect.y
  • rect.min和rect.max
  • rect.center

rect.x与rect.y

x,y就是rect类的根坐标,有了它我们就能确定我们就能确定矩形的位置。

void Update(){if (Input.GetMouseButtonDown(0)){Rect r=new Rect(0,0,200,200);print(r.Contains(Input.mousePosition));}}

这时候我们点击我们屏幕的左下角,发现返回true,完全可以点击到。

对!其实就是这么简单,不要被官网的说明误导。它就是根坐标在左下角,根据width与height向右和向上画出来的一个矩形,但是还稍稍有点不太一样。
在UGUI中,transform.rect你得到的相关属性或许很会奇怪。接下来的例子我们都以transform.rect得到的值来讲解。

我们在界面中添加一个Image,他的锚点与pivot值都不变,具体如下图:

这时候他的长宽都是知道的。我们输出trans.rect.x与trans.rect.y会是什么呢?
结果是(-50,-50),rect.size就是对x与y的包装。
因为rect的根是基于pivot的值来算的,把pivot的位置作为整个图形坐标的原点(0,0)。那么trans.rect的x与y因而所以就在第三象限为负值。
那么trans.rect.x与y的算法就是x=-widthpivot.x 和 y=-heightpivot.y。
下面用一张图来帮助理解。

 print("trans's rect x and y"+trans.rect.x+" "+trans.rect.y);print("caculate rect x and y"+-trans.rect.width*trans.pivot.x+" "+-trans.rect.height*trans.pivot.y);//trans.rect.position就是 x和y的封装

结果输出:

举一反三
那么如果pivot改为(0.5,1),trans.rect的xy各是多少呢?还是一样的公式,此时整个坐标的原点到了图形最上面那一条边的中间了,trans.rect的xy为(-50,-100)。

总结:UGUI中rect的根坐标是基于pivot的位置来计算的。其他场景下的rect可以认为pivot为(0,0),那么rect的根坐标也就自然为(0,0)。

rect.min和rect.max

rect.min也就是(rect.x,rect.y),表示左下角坐标也就是根坐标
rect.max就是(width+rect.x,height+rect.y),表示右上角坐标
同时rect.min=(rect.xMin,rect.yMin) rect.max(rect.xMax,rect.yMax)
(以下例子pivot为(0.5,0.5)):

print("trans's rect min and max"+trans.rect.min+" "+trans.rect.max);
print("caculate rect min and max"+new Vector2(trans.rect.x,trans.rect.y)+" "+new Vector2(trans.rect.width+trans.rect.x,trans.rect.height+trans.rect.y));


举一反三
如果这是pivot为(0,1)呢?
通过上面的公式求的min(0,-100)max(100,0)

rect.center

Unity UGUI Rect相关推荐

  1. Unity UGUI——Rect Transform包裹(Anchor Presets)

    Anchor Presets使用演示样品物业 版权声明:本文博主原创文章.博客,未经同意不得转载. 转载于:https://www.cnblogs.com/gcczhongduan/p/4910821 ...

  2. Unity UGUI基础 之 Scroll View/Scroll Rect 的简单使用,并取消拖拽(滑动内容)效果,拖拽只在Scrollbar 上起作用

    Unity UGUI基础 之 Scroll View/Scroll Rect 的简单使用,并取消拖拽(滑动内容)效果,拖拽只在Scrollbar 上起作用 目录 Unity UGUI基础 之 Scro ...

  3. Unity UGUI Batches合批规则详解(含源码)

    Unity UGUI Batches合批规则详解 在处理UGUI DrawCall问题的时候,我们经常遇到各式各样的问题. 问题1:在处理UGUI合批的时候,发现了一个面板父节点发生旋转,底下的UI合 ...

  4. Unity UGUI图文混排源码(二)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  5. Unity UGUI 数字使用图片显示-BMFont

    Unity UGUI 数字使用图片显示-BMFont BMFont 之前使用Cocos引擎的时候需要用到艺术字也就是将数字使用美术给的图片来代替显示,也就是要做一个新字体专门用来显示艺术字,当时用的是 ...

  6. Unity UGUI开发设计及案例讲解

    Unity--UGUI开发设计及案例讲解 1. Unity4.6跟以前的版本的最大区别首先在于在层级视图中点鼠标右键时出现的弹出菜单上,它把以前许多的菜单项进行了归类,比如cube sphere ca ...

  7. 【游戏开发实战】Unity UGUI制作雷达图/天赋图/属性图/能力图,因为太怕痛就全点了防御力

    文章目录 一.前言 二.最终效果 三.原理 四.具体实现 1.雷达图背景图 2.封装UIPolygon.cs 3.制作预设 4.测试脚本RadarTest.cs 五.运行测试 六.结束语 七.附录:U ...

  8. Unity UGUI

    超详细的基础教程传送门:(持续更新中) Unity UGUI之Canvas&EventSystem:http://blog.csdn.net/qq992817263/article/detai ...

  9. Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法)

    Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法) 目录 Unity UGUI 之 实现 Text 文本文字过长,省略号显示(Te ...

最新文章

  1. 利用结构体输入输出员工信息
  2. 解决尺度不平衡,Facebook 全景分割新算法
  3. ACL在路由器上设置例子
  4. Samba nsswitch/pam_winbind.c文件输入验证漏洞
  5. python下载显示文件丢失_Microsoft.PythonTools.resources.dll
  6. 【Python】Python库之数据分析
  7. 《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言
  8. Linux系统编程(18)——正则表达式实用举例
  9. linux下截图软件 shutter
  10. 小D课堂 - 新版本微服务springcloud+Docker教程_5-08 断路器监控仪表参数
  11. ym——Android从零开始(27)(山寨版微信-下)(新)
  12. 色貌模型-introduction
  13. Ubuntu 20.04使用微信 (亲测有效)
  14. 输入身高体重测身材_身高体重测试(女人标准体重计算器)
  15. ps4手柄驱动linux,Arduino和单片机区别,及Arduino入门教程
  16. 八百呼的录音话机能解决企业的客户纠纷
  17. 深圳大学数学文化赏析MOOC答案
  18. php直播系统app吗,ThinkPHP完美运营版安卓苹果双端直播系统APP源码 带主播连麦PK功能源码...
  19. ISA禁止skype网络电话的原理
  20. MTCNN(一)python代码训练与运行

热门文章

  1. 松香的用法(电烙铁焊接)
  2. C++ 操作Word入门教程
  3. linux 驱动笔记(一)
  4. PHP代码审计系统—RIPS
  5. mysql期末作业_MySql期中作业
  6. 微信小程序——商品列表
  7. Chap1_基础理论+Chap2_数据准备和数据模型
  8. pymysql无法访问本地计算机,使用Python和odo模块在mysql上加载csv时出错
  9. vertica资源管理
  10. 安装pod遇到这种错误ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/xco