UI同步屏幕自适应

可以看到我们是一个框选的功能 我的想法是 在 UI上面做一个Img 去进行一个框选 这个时候我是这么实现的

cs 复制代码
 public Rect GetSelectionAreaRect()
 {
     Vector2 selectionEndMousePosition = Input.mousePosition;
     var lowerLeftCorner = new Vector2
     (
         Mathf.Min(selectionStartMousePosition.x, selectionEndMousePosition.x),
         Mathf.Min(selectionStartMousePosition.y, selectionEndMousePosition.y)
         );
     var upperRightCorner = new Vector2
     (
         Mathf.Max(selectionStartMousePosition.x, selectionEndMousePosition.x),
         Mathf.Max(selectionStartMousePosition.y, selectionEndMousePosition.y)
     );
     return new Rect(
         lowerLeftCorner.x,
         lowerLeftCorner.y,
         upperRightCorner.x - lowerLeftCorner.x,
         upperRightCorner.y - lowerLeftCorner.y

         );

 }

这部分代码是 计算当前的 鼠标的起始点 和 鼠标的终点 之后构建一个矩阵

矩阵的 是按照左下角进行算的 那么当前的UI锚点也是 左下

要不然你的位置是不对的

之后你要在

cs 复制代码
   var localScale = canvas.transform.localScale.x;//自适应UI
   Rect selectionAreaRect = UnitSelectionManager.Instance.GetSelectionAreaRect();
   selectionUI.anchoredPosition = new Vector2(selectionAreaRect.x, selectionAreaRect.y)/ localScale;
   selectionUI.sizeDelta = new Vector2(selectionAreaRect.width, selectionAreaRect.height)/ localScale  ;

计算一个canvas 的缩放 这个是因为你的是UI的 所发 如果是 1920 1080的缩放来计算的化 到 其他的大小你的canvas 就会进行变更我们要根据当前的 canvas所发进行计算到最终的点举一个例子

修改后

你应该就发现问题 所以你要根据当前的 矩阵 是根据屏幕大小来计算的 所以要 / 屏幕的缩放了

相关推荐
Oll Correct1 小时前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator
huaqianzkh1 天前
WinForm C#:循环修改控件UI闪烁卡顿?SuspendLayout / ResumeLayout 与 BeginUpdate 优化
开发语言·ui·c#
Oll Correct2 天前
Adobe illustrator 案例十三:adidas标志草图绘制
笔记·ui·adobe·illustrator
FungLeo2 天前
成为全栈·Vue 管理后台篇·Vue3 + Vite + Naive UI:后台工程基座怎么搭
前端·vue.js·ui·typescript·vite·前端工程化·biome
敲上瘾3 天前
Qt Widgets入门:项目模板解析与Hello World
开发语言·数据库·c++·qt·ui·qt6.3
Oll Correct4 天前
Adobe illustrator 案例十二:视频播放(Media & Video)图标绘制
笔记·ui·adobe·illustrator
行者-全栈开发5 天前
【鸿蒙心迹】国际化 i18n 与多语言资源管理实战(HarmonyOS 7.x)
ui·华为·重构·国际化·harmonyos·多语言
寂寞的船6 天前
【Unity知识速递】第5期 Unity 6.2 深度解析:AI Assistant 登场,World Space UI 与 Sentis 全面升级
人工智能·ui·unity
秋名山小白6 天前
Playwright UI 自动化测试实战教程
python·ui
wuyk5557 天前
PyQt6-第15讲-数据可视化QChart
python·ui·信息可视化·pyqt