如何将ui元素的宽度除以2?

问题描述

(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;