首页 > 解决方案 > Unity getter setter 限制不起作用

问题描述

我正在使用 getter/setter 来限制值。它是 input.deltaPosition.x,玩家可以旋转行星,但我不想让玩家疯狂地滑动手指并将行星旋转 654654321 度。所以我声明了一个变量和getter/setter。但该值仍然采用 650+ 值或负值。

if(touch.phase == TouchPhase.Moved)
            {                
                TouchX = touch.deltaPosition.x;
                transform.Rotate(0, yMultiplier * TouchX * Time.deltaTime * planetSpeed, 0, Space.World);
}

这是getter/setter

private float TouchX
    {
        get { return touchX; }
        set
        {
            if (touchX > 10)
                touchX = 10;
            else if (touchX < -10)
                touchX = -10;
            else
                touchX = value;
        }
    }

我做错了什么还是一个错误?

标签: c#unity3d

解决方案


除了你没有检查value你已经发现实际上你的代码可以通过简单地使用来简化很多Mathf.Clamp

private float TouchX
{
    get { return touchX; }
    set
    {
        touchX = Mathf.Clamp(value, -10, 10);
    }
}

推荐阅读