Unity getter ограничение установки не работает - PullRequest
0 голосов
/ 24 апреля 2020

Я использую метод получения / установки для ограничения значения. Это input.deltaPosition.x, игрок может вращать pl anet, но я не хочу, чтобы игрок безумно скользил пальцем и поворачивал pl anet, как 654654321 градусов. Поэтому я объявил переменную и получатель / установщик. Но все же значение принимает значение 650+ или отрицательное.

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

Это метод получения / установки

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

Что я делаю неправильно или это ошибка?

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Кроме того, что вы не проверяете value, как вы уже поняли, ваш код можно значительно упростить, просто используя Mathf.Clamp

private float TouchX
{
    get { return touchX; }
    set
    {
        touchX = Mathf.Clamp(value, -10, 10);
    }
}
1 голос
/ 24 апреля 2020

@ BugFinder заявил, что я проверяю текущее значение, а не новое, оно должно быть

private float TouchX
    {
        get { return touchX; }
        set
        {
            if (value > 10)
                touchX = 10;
            else if (value < -10)
                touchX = -10;
            else
                touchX = value;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...