Canvas UI Scale Mode
Добавлено: 17 ноя 2019, 21:30
Вопрос такой: Чё за нафиг?
Есть у меня некая панелька допустим 100х100. по нажатию кнопки она начинает двигаться за мышкой, но с ограничением, панель не должна выходить за пределы экрана.
Казалось бы что может пойти не так. Но увы всё оказалось не так просто. Все работает как нужно, пока не начнёшь изменять разрешение экрана и тогда либо панель начинает останавливается не дойдя до края экрана, либо же наоборот уходит за экран. Потом я заметил что панель движется медленнее чем курсор. Я начал штрудировать все на тему RectTransform и sizeDelta, все должно было работать!
Сегодня в очередной раз пытаясь все исправить, я заметил что у Canvas scale != 1 и решил изменить значение UI Scale Mode с Scale With Screen Size на Constant Pixel Size и О чудо! всё заработало, а scale == 1.
Что не так? как мне использовать Scale With Screen Size?
Есть у меня некая панелька допустим 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();
}
}
{
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?