Unity UGUI 之 坐标转换

本文仅作学习笔记与交流,不作任何商业用途

本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正

本文在发布时间选用unity 2022.3.8稳定版本,请注意分别

前置知识:Unity UGUI 之 事件接口-CSDN博客 

Unity UGUI 之 事件触发器-CSDN博客

屏幕坐标转UI坐标

Q:首先他是干什么的?

A:可以点击,触摸,拖拽UI

Q:那我用事件触发器也可以实现啊!

A:这就是事件触发器下的小知识,可以将其理解为事件触发器中的一个辅助函数

不然你自己写拖拽逻辑也行,不过用轮子岂不是更快更好更省力

RectTransformUtility - Unity 脚本 API

注意看倒数第二个方法,用于将屏幕的位置转为UI位置(矩形平面位置)RectTransformUtility-ScreenPointToLocalPointInRectangle - Unity 脚本 API

 举个栗子:

我屏幕上有的:

 

我写的代码: 

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.EventSystems;

public class 坐标转换 : MonoBehaviour,IDragHandler
{
    public RectTransform canvasRectTransform;
    //以拖拽接口为例
    public void OnDrag(PointerEventData eventData) {

        Vector2 UIposition;
        //屏幕坐标转Rect坐标 注意四个参数
        RectTransformUtility.ScreenPointToLocalPointInRectangle
           (
           canvasRectTransform,//1.你要在什么上面拖拽就填写谁的RectTransform
           eventData.position,//2.屏幕位置
           eventData.pressEventCamera,//3.触发当前事件的相机(Camera)对象
           out UIposition//最后UI的位置
           );
            {
            this.transform.localPosition = UIposition;
        }

    }
}

实际效果: 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值