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
- Type: Method
- Namespace: UnityEngine.UIElements
- Assembly: UnityEngine.UIElementsModule
public static Vector2 ScreenToPanel(IPanel panel, Vector2 screenPosition)
Parameters
Returns
Type | Description |
|---|---|
| Vector2 | A 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}"); }}