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

Очень давно была необходимость отображать координаты курсора в редакторе сцены. 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()); } }

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

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

Координаты курсора сцены в редакторе
55
2 комментария

Unity, на сколько я понимаю, до сих пор этого не умеет. написал в Unity скрипт на 20 строчек 🤷‍♂️

4

этот чувак ты )))))))))

1