Обнулить offset в RectTransform, расположив anchors по углам rect

Кратко: как провести линию из нижнего левого в правый верхний угол экрана?

Если я сделаю:

offsetMin = Vector2.zero;
offsetMax = Vector2.zero

То прямоугольник встанет точно по якорям, будто я вручную в инспекторе обнулил параметры Left, Top, Bottom, Right. А я хочу с точностью да наоборот.

Нажимаешь на кнопку контекстного меню — якоря встают по углам прямоугольника.

Мой ход мыслей таков:

  1. anchorMin и anchorMax - это позиции нижнего левого и верхнего правого якорей соответственно от 0 до 1.
  2. Screen.width и Screen.height - размеры экрана
  3. Чтобы получить anchorMin и anchorMax можно позиции нижнего левого и верхнего правого якорей разделить на размеры экрана.

Для проверки я написал такой код:

[MenuItem("CONTEXT/RectTransform/Nullify")]
static void Nullify (MenuCommand command)
{
    RectTransform RT = (RectTransform)command.context; // Получаем RectTransform

    Vector2 RectMin = new Vector2(RT.position.x - RT.rect.size.x / 2,
                                  RT.position.y - RT.rect.size.y / 2); // Минимальный угол прямоугольника
    Vector2 RectMax = new Vector2(RT.position.x + RT.rect.size.x / 2,
                                  RT.position.y + RT.rect.size.y / 2); // Максимальный угол прямоугольника

    Debug.DrawLine(RectMin, RectMax, Color.red, 10); // Линия между углами прямоугольника
    Debug.DrawLine(Vector2.zero, new Vector2(Screen.width, Screen.height), Color.green, 10); // Линия между углами экрана
}

И вот тут появляется интересность: первый луч проводится точно между углами прямоугольника, а вот второй луч выходит из нижнего левого угла экрана и заканчивается совершенно не в правом верхнем, а где-то выше и левее:

введите сюда описание изображения

Я думаю, что мой подход верен, но он ломается из-за того, что я не могу нормально получить координаты верхнего правого угла экрана. Хотя по факту это должно быть Screen.width, Screen.height, нарисованная линия показывает, что это не так.

В итоге ответом на мой вопрос будет хотя бы одно из:

  • Координаты верхнего правого угла экрана
  • Как провести линию между углами экрана
  • Как реализовать это: "Нажимаешь на кнопку контекстного меню — якоря встают по углам прямоугольника" (это уж прям совсем глобальный вопрос)

Ответы (0 шт):