Координаты курсора сцены в редакторе

от автора

Очень давно была необходимость отображать координаты курсора в редакторе сцены. Unity, на сколько я понимаю, до сих пор этого не умеет. Написал давно. Выглядит просто. Сегодня в очередной раз пригодилось, так как нужно было половить пиксели на сцене в режиме паузы.

public class CursorSceneCoordinates : EditorWindow {     private Vector2 _scenePosition;      [MenuItem("Cursor Scene Coordinates")]     static void Init()     {          CursorSceneCoordinates window = GetWindow<CursorSceneCoordinates>();         window.Show();     }      private void OnEnable() { SceneView.duringSceneGui += SceneViewDuring; }       private void OnDisable() { SceneView.duringSceneGui -= SceneViewDuring; }      private void SceneViewDuring(SceneView scene)     {         var e = Event.current;         if (e.type == EventType.KeyDown && e.keyCode == KeyCode.Space)         {             float pixelsPerPoint = EditorGUIUtility.pixelsPerPoint;             Vector2 mouse = e.mousePosition;             mouse.x *= pixelsPerPoint;             mouse.y = scene.camera.pixelHeight - mouse.y * pixelsPerPoint;             _scenePosition = scene.camera.ScreenToWorldPoint(mouse);              Repaint();         }     }      void OnGUI()     {         EditorGUILayout.LabelField("Scene: ", _scenePosition.ToString());     }  }

После открытия окна, перемещая курсор по редактору сцены и нажимая на пробел, в окошке будет выводится координаты мира.

Из этого простого решение можно сделать интересный инструмент. Например, пускать луч и отображать список объектов, слоев и другую информацию для отладки.

Иногда бухчу про #gamedev в Твиттере https://twitter.com/delaigrodela


ссылка на оригинал статьи https://habr.com/ru/post/651423/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *