Canvas UI Scale Mode

Общие вопросы о Unity3D

Canvas UI Scale Mode

Сообщение Moonlight26 17 ноя 2019, 21:30

Вопрос такой: Чё за нафиг?
Есть у меня некая панелька допустим 100х100. по нажатию кнопки она начинает двигаться за мышкой, но с ограничением, панель не должна выходить за пределы экрана.
Синтаксис:
Используется csharp
 void Update()
    {

        if (Input.GetKeyDown("m")) isMove = !isMove;        
        if (isMove)
        {
            Vector2 vector2;

            vector2.x = Input.mousePosition.x - Screen.width / 2;
            vector2.y = Input.mousePosition.y - Screen.height / 2;

            float a = Screen.width / 2 - rectTMovePanel.sizeDelta.x / 2;
            float b = Screen.height / 2 - rectTMovePanel.sizeDelta.y / 2;
            vector2.x = Mathf.Clamp(vector2.x, -a, a);
            vector2.y = Mathf.Clamp(vector2.y, -b, b);
                     

            rectTMovePanel.localPosition = vector2;

            text = a.ToString() + " " + b.ToString();
        }
    }
 


Казалось бы что может пойти не так. Но увы всё оказалось не так просто. Все работает как нужно, пока не начнёшь изменять разрешение экрана и тогда либо панель начинает останавливается не дойдя до края экрана, либо же наоборот уходит за экран. Потом я заметил что панель движется медленнее чем курсор. Я начал штрудировать все на тему RectTransform и sizeDelta, все должно было работать!
Сегодня в очередной раз пытаясь все исправить, я заметил что у Canvas scale != 1 и решил изменить значение UI Scale Mode с Scale With Screen Size на Constant Pixel Size и О чудо! всё заработало, а scale == 1.
Что не так? как мне использовать Scale With Screen Size?
Moonlight26
UNец
 
Сообщения: 17
Зарегистрирован: 05 окт 2018, 15:56
Откуда: Харків

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 9