
Я нашел интересное предложение:
Код: Выделить всё
private Rect GetMainGameViewPosition()
{
System.Reflection.Assembly assembly = typeof(EditorWindow).Assembly;
Type type = assembly.GetType("UnityEditor.GameView");
EditorWindow gameview = EditorWindow.GetWindow(type);
return gameview.position;
}
Как мне программно получить геометрию области, выделенной красным? Решение должно учитывать текущий масштаб (например, 1x-10x) и панорамирование.
Мотивация: если вам интересно, зачем мне это нужно, то потому, что У меня есть устройство отслеживания глаз, координаты которого доступны относительно дисплея, и мне нужно в реальном времени сопоставить их с областью, выделенной красным, чтобы я мог связать входные данные отслеживания глаз с игровым контентом.
Причина, по которой я говорю «предназначено», заключается в том, что я столкнулся с неожиданным поведением: я ввожу в консоль полученную геометрию «GameView» (x:472, y:73, ширина:1447, высота:656), и хотя ширина и высота точно соответствуют желтой области (обратите внимание, что она содержит часть панели управления), кажется, что x, y соответствуют только точке в верхнем левом углу область выбора вкладки «Сцена/Игра», поэтому я нарисовал там зеленый прямоугольник (именно размером 472х73). Обратите внимание, что эта интерпретация не исправляется перемещением зеленого прямоугольника в верхнюю левую точку кнопки «Файл».
Подробнее здесь: https://stackoverflow.com/questions/785 ... or-not-jus