Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


ScreenToPanel(IPanel, Vector2)

Transforms a screen absolute position to its equivalent local coordinate on given panel.
Read time 1 minuteLast updated 10 days ago

Definition

public static Vector2 ScreenToPanel(IPanel panel, Vector2 screenPosition)

Parameters

panel

The local coordinates reference panel.

screenPosition

The screen position to transform.

Returns

Type

Description

Vector2A position in panel coordinates that corresponds to the provided screen position.

Remarks

The following example converts the mouse position from screen coordinates to UI Toolkit panel coordinates:

Examples

using UnityEngine;using UnityEngine.UIElements;public class ScreenToPanelConverter : MonoBehaviour{ private UIDocument uiDocument; void Awake() { uiDocument = GetComponent<UIDocument>(); } void Update() { if (uiDocument == null || uiDocument.rootVisualElement == null) { return; } // 1. Get the mouse position in screen pixel coordinates (origin is bottom-left). Vector2 screenPosition = Input.mousePosition; // 2. Invert the Y-axis to match UI Toolkit's top-left origin. screenPosition.y = Screen.height - screenPosition.y; // 3. Use the panel's utility function to convert from screen space to panel space. // This correctly handles any scaling applied by the panel (for example, Scale with Screen Size). IPanel panel = uiDocument.rootVisualElement.panel; Vector2 panelPosition = RuntimePanelUtils.ScreenToPanel(panel, screenPosition); Debug.Log($"Screen Position: {Input.mousePosition}, Panel Position: {panelPosition}"); }}