Координаты Курсора Сцены В Редакторе

Давно возникла необходимость отображать координаты курсора в редакторе сцен.

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://x.com/delaigrodela Теги: #Разработка игр #gamedev #gamedevelopment #C++ #unity #разработка игр #unity3d #учебник по Unity #уроки Unity #indiedev #indie gamedev #пример кода

Вместе с данным постом часто просматривают: