问题描述
(float)rect.sizeDelta.x / 2.0f
我试图将rect变换的宽度除以2,但是它只返回rect变换的宽度的原始值。和大小增量返回vector2,所以我认为它们都是浮动的。那么为什么会发生这种情况,我该如何解决呢?
-编辑----
这是我的强制代码。
public move m;
float oris;
// Start is called before the first frame update
void Start()
{
oris = transform.localScale.x;
}
// Update is called once per frame
void Update()
{
if (m.abletime - Time.time > 0)
{
transform.parent.GetComponent<RectTransform>().sizeDelta = new Vector2(((m.killtime - (m.abletime - Time.time)) / m.killtime) * 100f,100f);
}
var halfWidth = GetComponent<RectTransform>().rect.width / 2f;
GetComponent<RectTransform>().localPosition = new Vector3(halfWidth,0);
}
解决方法
请注意,RectTransform.sizeDelta
取决于您的锚设置,顾名思义,在大多数情况下,该值是 delta 值
如果锚点位于父对象的四个角中的每个角落,则
sizeDelta
是矩形与父对象相比的大小。
如果您想要实际的宽度,则应该使用RectTransform.rect
var halfWidth = GetComponent<RectTransform>().rect.width / 2f;