欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

关于Unity中RectTransform与transform的区别

时间:2022-04-27 10:27:47|栏目:.NET代码|点击:

以前一直以为在Inspector面板上的是Transform,后来才发现原来2D是RectTransform,3D是Transform

3D面板上显示的是位置坐标组件Transform,2D面板上显示的是位置坐标组件RectTransform

RectTransform是Transform的子类

可以这样强制转换,反过来则不行

gameObject.GetComponent<RectTransform>().anchoredPosition3D = new Vector3(x,y,z);

”锚点“在”父物体“中的位置和样式,取值范围为0(父物体左下) - 1(父物体右上)。
当值的最大和最小不相同的时候表示一个区间,这时锚点会散开,锚点的一边在最小值上,锚点的一边在最大值上,都一样的时候就会如上图在一个点上
特性: 决定当父物体改变的时候子物体的位置和 大小

RectTransform是继承transform的,它是针对unity中ui的,具体在表现上可以这样看待,凡是在在canvas组件下或者具有canvas组件的2d对象,他都recttransform组件,那些在3d空间下没有不受canvas控制的对象都是transfrom组件。
关于recttransform的坐标设置,我们在设置ui对象的坐标的时候设置的都是recttransform的坐标,他是相对于自身锚点的,和父对象的中心点没有关系应该这样设置。

RectTransform组件还有一个anchoredPosition字段,它是忽略z坐标的,一般使用anchoredPosition3D 进行设置
我们通常也会这样设置ui的坐标

gameObject.transform.localPosition = new Vector3(x,y,z)

但其实这样是不准确的,它的位置是相对于父节点的中心点的,只有在特殊条件下才会正确,就是在父节点的中心点和子节点的锚点是重合的情况下才是正确的。

可以看到属性面板中anchors的min和max相等的时候,也就是锚点是一个点的时候属性面板中设置坐标是Posx posy, posz。如果锚点不是重合的情况下

此时,他的属性面板是这样的

变成了left,top,posZ,right,bottom
分别代表距离左上右下和z轴的距离。

是用来计算坐标的,即表示,自己点的哪个位置相对锚点的坐标
总结:

gameobject.transform.localposition =

这种方式是子节点的中心点piovt相对于父节点的中心点poivt的对标

Vector3 vector3 = gameObject.GetComponent<RectTransform>().anchoredPosition3D=

这钟是子节点的中心点相对自身的锚点的坐标和父节点没有关系

上一篇:C# 位运算符整理

栏    目:.NET代码

下一篇:C#文件管理类Directory实例分析

本文标题:关于Unity中RectTransform与transform的区别

本文地址:http://www.codeinn.net/misctech/200322.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有