首页 > 解决方案 > 如何将 ui 元素的宽度除以 2?

问题描述

(float)rect.sizeDelta.x / 2.0f

我试图将矩形变换的宽度除以 2。但它只返回矩形变换宽度的原始值。并且 size delta 返回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, 0);
    }

标签: c#unity3dcalculatordivide

解决方案


请注意,这RectTransform.sizeDelta取决于您的锚设置,顾名思义,在大多数情况下是一个增量

如果锚点位于父项的四个角中的每一个中,则该矩形与其父sizeDelta项相比更大或更小。


如果您更想要实际宽度,您可能应该使用RectTransform.rect

var halfWidth = GetComponent<RectTransform>().rect.width / 2f;

推荐阅读