本文仅作学习笔记与交流,不作任何商业用途
本文包括但不限于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;
}
}
}
实际效果: