如何计算RectTransform中的sizeDelta?
How to calculate sizeDelta in RectTransform?
我编写了自定义布局所需的自定义内容装配器。因此,我需要控制 RectTransform.sizeDelta
属性 当锚点不相同但我无法显示该值时。
我不需要 Unity3D API 参考,我读了它,什么也没有,因为它只说:
The size of this RectTransform relative to the distances between the
anchors. If the anchors are together, sizeDelta is the same as size.
If the anchors are in each of the four corners of the parent, the
sizeDelta is how much bigger or smaller the rectangle is compared to
its parent.
谁能用普通话解释一下是什么意思?当锚点不相同时,我如何手动计算它?
这个定义确实有点令人困惑。
sizeDelta
,基本上,returns UI 元素的实际矩形与锚点定义的矩形之间的差异。
例如,给定一个 300x200 的矩形:
锚点与矩形的角在同一位置:sizeDelta
是 (0,0)
矩形一半宽度处的左锚点或右锚点:sizeDelta
是 (150,0)
一个点中的所有四个锚点:sizeDelta
是 (300,200)(即:与矩形大小相同)
如你所见,根本不重要where锚点定义的矩形的中心是,唯一重要的是宽度之间的差异元素矩形和锚点矩形的高度。
在伪代码中是这样的:
sizeDelta.x = UIElementRectangle.width - AnchorsRectangle.width;
sizeDelta.y = UIElementRectangle.height - AnchorsRectangle.height;
因此,如果 UI 矩形的尺寸大于锚点的尺寸,则 sizeDelta
为正,如果较小,则 sizeDelta
为负。
sizeDelta: 如果您进行了搜索,并在此处结束了对 sizeDelta 含义的解释,例如 GetComponent().sizeDelta.y,请理清思路.
可视化一个小面板,它位于一个大 CANVAS 之上,它是父对象。
在PANEL的Rect Transform组件中,定义了2个矩形:
(a) 由其 Anchors 定义的矩形。那些三角形。通常与父对象位置和尺寸相关,在本例中为 CANVAS.
(b) 由自己的尺寸定义的矩形,PANEL自己的尺寸。
sizeDelta = (b) - (a)
就是这样。因为通常像 Button 这样的交互式组件,与它所在的对象(如 Panel)相比尺寸更小,因此,通常 sizeDelta 是负值。按钮大小 - 面板大小 = 通常为负值。
您知道在一般设计理论中使用的术语负 Space 吗?
把它想象成 space 不被面板上的按钮使用。
示例:
如何找到 Panel 的高度,即 Canvas 的子项,它是相机叠加层,因此屏幕大小。面板的锚点与 Canvas 维度相关。脚本在 Panel 对象上:
panelHeight = Screen.height + this.GetComponent().sizeDelta.y;
请记住,sizeDelta 通常为负数,因此它看起来更像是这样的伪代码:
panelHeight = Screen.height - 这个.sizeDelta.y
希望这对你有帮助,让我发疯了一段时间。干杯!
参考文献:
public Vector2 ActualSize(RectTransform trans, Canvas can)
{
var v = new Vector3[4];
trans.GetWorldCorners(v);
//method one
//return new Vector2(v[3].x - v[0].x, v[1].y - v[0].y);
//method two
return RectTransformUtility.PixelAdjustRect(trans, canvas).size;
}
此功能在启动时有效
我编写了自定义布局所需的自定义内容装配器。因此,我需要控制 RectTransform.sizeDelta
属性 当锚点不相同但我无法显示该值时。
我不需要 Unity3D API 参考,我读了它,什么也没有,因为它只说:
The size of this RectTransform relative to the distances between the anchors. If the anchors are together, sizeDelta is the same as size. If the anchors are in each of the four corners of the parent, the sizeDelta is how much bigger or smaller the rectangle is compared to its parent.
谁能用普通话解释一下是什么意思?当锚点不相同时,我如何手动计算它?
这个定义确实有点令人困惑。
sizeDelta
,基本上,returns UI 元素的实际矩形与锚点定义的矩形之间的差异。
例如,给定一个 300x200 的矩形:
锚点与矩形的角在同一位置:sizeDelta
是 (0,0)
矩形一半宽度处的左锚点或右锚点:sizeDelta
是 (150,0)
一个点中的所有四个锚点:sizeDelta
是 (300,200)(即:与矩形大小相同)
如你所见,根本不重要where锚点定义的矩形的中心是,唯一重要的是宽度之间的差异元素矩形和锚点矩形的高度。
在伪代码中是这样的:
sizeDelta.x = UIElementRectangle.width - AnchorsRectangle.width;
sizeDelta.y = UIElementRectangle.height - AnchorsRectangle.height;
因此,如果 UI 矩形的尺寸大于锚点的尺寸,则 sizeDelta
为正,如果较小,则 sizeDelta
为负。
sizeDelta: 如果您进行了搜索,并在此处结束了对 sizeDelta 含义的解释,例如 GetComponent().sizeDelta.y,请理清思路.
可视化一个小面板,它位于一个大 CANVAS 之上,它是父对象。 在PANEL的Rect Transform组件中,定义了2个矩形:
(a) 由其 Anchors 定义的矩形。那些三角形。通常与父对象位置和尺寸相关,在本例中为 CANVAS.
(b) 由自己的尺寸定义的矩形,PANEL自己的尺寸。
sizeDelta = (b) - (a)
就是这样。因为通常像 Button 这样的交互式组件,与它所在的对象(如 Panel)相比尺寸更小,因此,通常 sizeDelta 是负值。按钮大小 - 面板大小 = 通常为负值。 您知道在一般设计理论中使用的术语负 Space 吗? 把它想象成 space 不被面板上的按钮使用。
示例: 如何找到 Panel 的高度,即 Canvas 的子项,它是相机叠加层,因此屏幕大小。面板的锚点与 Canvas 维度相关。脚本在 Panel 对象上:
panelHeight = Screen.height + this.GetComponent().sizeDelta.y;
请记住,sizeDelta 通常为负数,因此它看起来更像是这样的伪代码:
panelHeight = Screen.height - 这个.sizeDelta.y
希望这对你有帮助,让我发疯了一段时间。干杯!
参考文献:
public Vector2 ActualSize(RectTransform trans, Canvas can)
{
var v = new Vector3[4];
trans.GetWorldCorners(v);
//method one
//return new Vector2(v[3].x - v[0].x, v[1].y - v[0].y);
//method two
return RectTransformUtility.PixelAdjustRect(trans, canvas).size;
}
此功能在启动时有效