首页 > 其他分享 >记一次分辨率不同导致的缩放问题

记一次分辨率不同导致的缩放问题

时间:2023-08-23 12:12:51浏览次数:35  
标签:导致 缩放 canvasScaler 分辨率 float canvas 偏移

问题描述:

粉色块要相对于棕色块有一定距离的偏移,这个距离要求走配置(用一个文件记录下来),配置的时候是使用16:9的分辨率。

在其它分辨率下,导致粉色块和棕色块的偏移有出入。

 原因:因为canvas设置的是screenspace-camera,scalemode是scalewithscreensize,其他分辨率会对整个canvas进行缩放,但配置的偏移向量不会跟着缩放,所以会导致这个问题。

解决方法:

对配置的偏移向量进行和canvas一致的缩放处理。

Canvas mainCanvas = CommonController.GetCanvasMainCanvas();
        float ratio = 1;
        if (mainCanvas != null)
        {
            CanvasScaler canvasScaler = mainCanvas.GetComponent<CanvasScaler>();
            if (canvasScaler != null)
            {
                //存数据时的分辨率设置
                float defaultRatio = ((2048.0f * 1536.0f) / 1152.0f) / 2048.0f;
                //使用数据时的分辨率设置
                float curRatio = ((Screen.width * canvasScaler.referenceResolution.y) / Screen.height) / canvasScaler.referenceResolution.x;
                ratio = curRatio / defaultRatio;
            }
        }
        Dictionary<int, Vector3[]> result = new Dictionary<int, Vector3[]>();
        foreach(var v in dictSlotPosCache[curId])
        {
            Vector3[] posArray = new Vector3[v.Value.Length];
            for(int i=0;i<v.Value.Length;i++)
            {
                posArray[i] = new Vector3(v.Value[i].x * ratio, v.Value[i].y * ratio, v.Value[i].z * ratio);
            }
            result.Add(v.Key, posArray);
        }

canvasscaler缩放算法:

 

标签:导致,缩放,canvasScaler,分辨率,float,canvas,偏移
From: https://www.cnblogs.com/mcyushao/p/17650855.html

相关文章

  • SQL Server因设置最大内存太小导致无法启动的解决方案
    首先是    在服务器上发现SQLServer占用内存过大,128G服务器内存它占用高达100多G。于是就去找解决方案,找了几篇文章发现都是通过修改SQLServer服务器最大内存让其释放占用内存,如图所示,我把最大内存修改为128MB。发现问题    然后我就发现我的SQLServer服务无......
  • OceanBase大小账号导致执行计划突变验证
    一:创建测试数据createtablet1asselect*fromdba_objects;updatet1setobject_id=1whererownum=1;obclient>selectobject_id,count(*)fromtbcs.t1groupbyobject_id;+------+----------+|ID|COUNT(*)|+------+----------+|1|786432||2|1|+-......
  • (随笔)关于java自动以unix时间戳格式接收Date数据类型导致的sql查询时间失误问题的相
    前言​ 在进行项目开发的时候,有遇到过mapper执行sql语言查询指定时间范围内或截止时间之前的数据时不查询当天时间内不同时分秒时的数据,接口实现逻辑为前端传入Date类型(精度为yyyy-MM-dd)起止时间,mapper.xml文件中通过concat_ws方法实现时间精度转换(数据库内数据精度为yyyy-MM-dd......
  • conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles
    文章目录一、问题描述二、问题溯源三、解决方案3.1测试3.2方案一:不在powershell中使用conda3.2方案二:需要时再在powershell中使用conda(推荐)四、powershell7特点一、问题描述powershell启动缓慢:每次启动都会加载很久的配置文件:Loadingpersonalandsystemprofilestookxxx......
  • 一次分页慢查询导致的事故处理过程
    事故背景这次事故也是我们组里遇到的一次关于分页慢查询的典型例子,通过这篇文章,你可以很清晰的跟随我们还原事故现场,以及每一步遇到问题做出的调整和改动。事故问题现场16:00收到同事反馈,融合系统分⻚查询可⽤率降低16:05查询接⼝UMP监控,发现接⼝TP99异常彪⾼打开机器监控,发现⼏......
  • ElementUI中使用<el-row>自适应布局导致显示错乱
     错乱代码(部分):<el-row:gutter="5"><el-col:xs="24":sm="12":md="8":lg="6"v-for="(item,index)incaseList":key="index"> <img:src="baseUrl+item......
  • 一次分页慢查询导致的事故处理过程 转载
    原文:https://juejin.cn/post/7126356005192990750事故背景这次事故也是我们组里遇到的一次关于分页慢查询的典型例子,通过这篇文章,你可以很清晰的跟随我们还原事故现场,以及每一步遇到问题做出的调整和改动。事故问题现场16:00收到同事反馈,融合系统分⻚查询可⽤率降低16:05......
  • 【8月摸鱼计划】电脑证书失效,导致无法上网
    电脑证书失效怎么办?如果您的电脑证书失效,导致无法上网,您可以尝试以下步骤来解决问题:1.检查网络连接:检查您的网络连接是否正常,尝试重新启动路由器或调整网络设置。2.检查DNS服务器配置:检查计算机或网络设备的DNS服务器设置是否正确,确保使用的DNS服务器可用并已正确配置。您可以尝......
  • H5移动端禁止页面缩放(使用Android和IOS)
    <metaname="viewport"content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>标签说明:width:设置viewport的宽度,正整数/字符串device-widthheight:设置viewport的高度,正整数/字符串device-heightinitia......
  • 解决达梦数据库密码复杂性导致的数据导出问题 - 问题记录
    问题描述在使用达梦数据库时,遇到了以下问题:密码过于复杂,无法进行数据库的导出备份操作。数据库导出时存在表数据导出不全的情况。本文旨在记录并解决这些问题的过程。问题解决过程问题1:密码过于复杂导致无法导出备份解决方法:使用管理员账户连接到达梦数据库,并修改数......