Unity 世界坐标转ui坐标
底层算法
public static Vector2 WorldToUGUIPosition(Canvas canvas, Camera worldCamera, Vector3 worldPosition) { // 将世界坐标转换为屏幕坐标 var screenPosition = worldCamera.WorldToScreenPoint( worldPosition); //RectTransformUtility.WorldToScreenPoint(camera, worldPosition); // 将屏幕坐标转换为 UGUI 坐标 var uiCamera = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : canvas.worldCamera; RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, screenPosition, uiCamera, out var localPoint); return localPoint; }
调用 WorldToUGUIPosition
public static Vector2 WorldPos2UI(Vector3 worldPos) { if (Camera.main == null) return Vector2.zero; var uiPos = UUtil.Unity.WorldToUGUIPosition(UUIViewManager.Instance.uiCanvas, Camera.main, worldPos); return uiPos; }
调用 WorldPos2UI
UUIViewHelper.WorldPos2UI(Context.TargetTf.position);

浙公网安备 33010602011771号