UGUI实现鼠标指哪走哪而引发的UI坐标问题

本文探讨了在Unity3D中,UGUI如何处理屏幕自适应和坐标转换问题。通过Canvas RenderModel设置,讲解了ScreenSpace-Overlay和ScreenSpace-Camera两种模式下,UI元素的坐标系统与屏幕坐标的差异。文中提供了两种方法实现鼠标点击时UI图片出现在对应位置,强调了UI自适应带来的坐标变化,并指出在不同分辨率下进行坐标转换的必要性。
摘要由CSDN通过智能技术生成

原本以为对UI坐标有够深的了解,然后却发现我爱它爱的缺没有那么深沉,正如标题而言,你若要实现一个鼠标点击屏幕,然后屏幕上的图片就在鼠标位置出现,你会怎么做,然后你为什么会这样做,请读者先暂停阅读,思考并实现了再往下看....这是一个挺烦人的问题,至少曾经困扰过我,所以,特此记录下以便初学的朋友少走弯路,扯下这层神秘的面纱,把它丢进臭水沟里,践踏它,蹂躏它,噢,咱们开始吧.、

1.Canvas RenderModel设置为ScreenSpcae-Overlay情况下 
方式一:

 mousePos = Input.mousePosition;
 image.GetComponent<RectTransform>().anchoredPosition = mousePos / canvas.transform.localScale.x; 
坐标系是相对于父物体的 anchors设置为左下角时
 就和屏幕坐标系完全吻合 言外之意设置为其他anchor时会有偏移 因为设置的anchor点就是图片坐标系的原点
另外:当canvas设置了自适应时 canvas会有缩放 所以 正确的位置信息 = 屏幕位置信息 / canvas的缩放值 
 举个例子 : Canvas scaler组件下的UIScaleMode设置为Scale with Screen size 后 参考的分辨率设为1280 720 

screen Match Mode 设置为Match Width or Height. Match值设为1 则在屏幕高度不等于720时把canvas的高度设为720

然后根据当前screen的宽高去设置canvas的width, 比方说我当前screen的宽高为793 446。而参考屏幕720的高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值