RuntimePanelUtils.ScreenToPanel
Declaration
public static Vector2 ScreenToPanel(UIElements.IPanel panel, Vector2 screenPosition);Параметры
| Параметр | Описание |
|---|---|
| панель | Панель местных координат. |
| screenPosition | Позиция экрана для преобразования. |
Возвращаемое значение
Vector2 Позиция в координатах панели, которая соответствует указанной позиции экрана.
Описание
Преобразует абсолютное положение экрана в его эквивалентную локальную координату на данной панели.
Следующий пример преобразует позицию мыши из координат экрана в координаты панели UI Toolkit:
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}"); } }