Unity 6.3
0 онлайн 30 гостей 3 в системе
Вход

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}"); } }