我使用gettersetter来限制一个值。这是input.deltaPosition.x,玩家可以旋转星球,但我不想让玩家疯狂地滑动手指,把星球旋转成654654321度。所以我声明了一个变量和gettersetter。但是数值还是取650+的值或者负值。
if(touch.phase == TouchPhase.Moved)
{
TouchX = touch.deltaPosition.x;
transform.Rotate(0, yMultiplier * TouchX * Time.deltaTime * planetSpeed, 0, Space.World);
}
这就是gettersetter
private float TouchX
{
get { return touchX; }
set
{
if (touchX > 10)
touchX = 10;
else if (touchX < -10)
touchX = -10;
else
touchX = value;
}
}
我做错了什么,还是一个错误?
另外你没有检查 value
你已经明白了,其实你的代码可以简化很多,只需使用简单的 Mathf.Clamp
private float TouchX
{
get { return touchX; }
set
{
touchX = Mathf.Clamp(value, -10, 10);
}
}
@BugFinder说,我检查的是当前的值,而不是新的值,它必须是
private float TouchX
{
get { return touchX; }
set
{
if (value > 10)
touchX = 10;
else if (value < -10)
touchX = -10;
else
touchX = value;
}
}