找回密码
 立即注册
查看: 6471|回复: 85

[脚本] 使用CanvasScaler后,ui位置如何的转换

[复制链接]
发表于 2016-7-22 21:32 | 显示全部楼层 |阅读模式
我想实现一个弹出菜单的效果,鼠标点击,则在点击处弹出。但,用了CanvasScaler后,直接使用鼠标点击的屏幕位置是不对的。
屏幕位置必须要根据scale的规则转换,所以,我最先想用笨办法解决:
Vector3 pos = Input.mousePosition;
CanvasScaler scaler = ....;
if (scaler.uiScaleMode == CanvasScaler.ScaleMode.ScaleWithScreenSize)
{
       // 直接的办法,但还是有误差,
    pos.x *= scaler.referenceResolution.x /Screen.width ;
    pos.y *= scaler.referenceResolution.y / Screen.height;
}
else if (scaler.uiScaleMode == CanvasScaler.ScaleMode.ConstantPixelSize)
{
     // 这种模式下这么算是可以的
     pos /= scaler.scaleFactor;
}
GetComponent<RectTransform>().anchorMax = Vector2.zero;
GetComponent<RectTransform>().anchorMin = Vector2.zero;
GetComponent<RectTransform>().anchoredPosition = pos;

有没有现成的函数 ,或办法可以解决这个问题,必须要去实现Scaler的逻辑。
发表于 2017-2-18 15:24 | 显示全部楼层
很不错
发表于 2017-2-18 15:30 | 显示全部楼层
楼主是超人
发表于 2017-2-18 14:51 | 显示全部楼层
好帖就是要顶
发表于 2017-2-18 15:02 | 显示全部楼层
很好哦
发表于 2017-2-18 15:02 | 显示全部楼层
不错不错
发表于 2017-4-10 12:56 | 显示全部楼层
很不错
发表于 2017-4-10 13:20 | 显示全部楼层
楼主是超人
发表于 2017-4-10 12:28 | 显示全部楼层
顶顶多好
发表于 2017-4-10 12:40 | 显示全部楼层
很好哦
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-4 18:26 , Processed in 0.169572 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表