当前位置: 首页 > news >正文

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.你要在什么上面拖拽就填写谁的RectTransformeventData.position,//2.屏幕位置eventData.pressEventCamera,//3.触发当前事件的相机(Camera)对象out UIposition//最后UI的位置);{this.transform.localPosition = UIposition;}}
}

实际效果: 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++20之设计模式:状态模式
  • 新校区,新视野——广州六中以太彩光打造智慧教育新高地
  • Node.js知识点总结
  • 基于Neo4j将知识图谱用于检索增强生成:Knowledge Graphs for RAG
  • 【linux深入剖析】命名管道 | 匿名管道与命名管道的区别 | system V共享内存
  • 刷题计划 day4 【双指针、快慢指针、环形链表】链表下
  • MySQL字段设置的varchar长度小于数据长度自动截取丢弃超出的长度而不是报错?
  • 【JavaScript】深入理解 `let`、`var` 和 `const`
  • 文件包涵条件竞争(ctfshow82)
  • 基于微信小程序+SpringBoot+Vue的美食推荐平台(带1w+文档)
  • 音乐曲谱软件Guitar Pro 8.2 for Mac 中文破解版
  • JavaScript性能优化与调试
  • Vue前端页面嵌入mermaid图表--流程图
  • 探索二进制翻译,openKylin成功在RISC-V平台运行X86架构软件!
  • 李宏毅 深度学习 Deep 学习记录
  • 【刷算法】求1+2+3+...+n
  • C++类中的特殊成员函数
  • Docker下部署自己的LNMP工作环境
  • markdown编辑器简评
  • WebSocket使用
  • windows下使用nginx调试简介
  • 对超线程几个不同角度的解释
  • 解析带emoji和链接的聊天系统消息
  • 深度解析利用ES6进行Promise封装总结
  • 线性表及其算法(java实现)
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • mysql面试题分组并合并列
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2)MFC+openGL单文档框架glFrame
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Java入门)学生管理系统
  • (SERIES12)DM性能优化
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (一)80c52学习之旅-起始篇
  • (转)scrum常见工具列表
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .net dataexcel winform控件 更新 日志
  • .NET 解决重复提交问题
  • .net后端程序发布到nignx上,通过nginx访问
  • .net开发引用程序集提示没有强名称的解决办法
  • @Not - Empty-Null-Blank
  • [AutoSar]BSW_Com02 PDU详解
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C#] 基于 Token 的鉴权与签名机制详解 接口对接鉴权 token、sign(a=1b=2c=3d=4)、Base64、参数加密、MD5
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [CSS]一文掌握
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [English]英语积累本
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [M模拟] lc3153. 所有数对中数位不同之和(模拟+按位统计)
  • [NOIP2004] 提高组 洛谷P1090 合并果子
  • [PTP][1588v2] Follow_Up消息
  • [Python] 字典操作及方法总结