原本以为对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的高