首先说一下区域截图,先上代码,简单易懂。
Texture2D shot = new Texture2D((int)(rect.rect.width ), (int)(rect.rect.height));
float x = rect.localPosition.x + (Screen.width - rect.rect.width ) * 0.5f;
float y = rect.localPosition.y + (Screen.height - rect.rect.height ) * 0.5f;

    Rect position = new Rect(x, y, rect.rect.width, rect.rect.height);shot.ReadPixels(position, 0, 0);shot.Apply();

rect为你要截图的图片rect,x和y为图片左下角的坐标点,然后去读像素点保存成图片,读取像素点中的position为你的区域,其实此时的区域为你从rect的图片区域。这是区域截图的代码。
但是此代码有个问题。就是当你做好适配后,调整屏幕分辨率后你的截图就发生问题,比如当1200600的时候,截图就不是正好你的rect的位置了,我的默认分辨率是19201080,而最可恶的是当屏幕分辨率小于你的rect的whith和height的时候,就会报错了,大家应该会出现过这个错误,就是你的屏幕没那么大然后还读那么多像素点,结果就是没那么多点让你去读然后去写成图片。
所以你需要一个比例,保证你的rect在屏幕改变分辨率的时候依然截取到你想要的rect的区域。
其实这个有点坑人,你的canvas必须要设置一个默认的分辨率,以这个为基准的,我就是1920*1080为例子,canvas设置好后,在原来的代码上加以修改。贴上代码:
float ratio_x = Screen.width / 1920f;
//float ratio_y = Screen.height / 1080f;
Texture2D shot = new Texture2D((int)(rect.rect.width * ratio_x), (int)(rect.rect.height * ratio_x));
float x = rect.localPosition.x + (Screen.width - rect.rect.width * ratio_x) * 0.5f;
float y = rect.localPosition.y + (Screen.height - rect.rect.height * ratio_x) * 0.5f;

    Rect position = new Rect(x, y, rect.rect.width * ratio_x, rect.rect.height * ratio_x);shot.ReadPixels(position, 0, 0);shot.Apply();

这里我解释一下,ratio_x为我以宽设置的比例,就是当我屏幕不为这个1920的时候我看看我这个比例是多少。那么new 的tex就必须也得改版。不然我apply的时候其实像素点根本不够的,其实你看你的rect的with和height的时候,他依然是以前的值,比如500,你改变一下分辨率看看,你会发现ui的width和height都不改变,改变的scale。
不管scale改变多少,你只需要知道现在的分辨率和我1920为基准的差多少而已。
差多少我就乘以多少这个比例就完事了。
所以你取区域截图的x和y 都要乘以这个比例。 最终不管你怎么改变还是你想要的区域截图。
这个shot你直接拿到你要显示的地方就可以了。
最终代码做一下优化:

float ratio_x = Screen.width / 1920f;
//float ratio_y = Screen.height / 1080f;
float width = rect.rect.width * ratio_x;
float height = rect.rect.height * ratio_x;
Texture2D shot = new Texture2D((int)width, (int)height);
float x = rect.localPosition.x + (Screen.width - width) * 0.5f;
float y = rect.localPosition.y + (Screen.height - height) * 0.5f;

    Rect position = new Rect(x, y, width, height);shot.ReadPixels(position, 0, 0);shot.Apply();

关于unity区域截图像素越界解决办法相关推荐

  1. macunity日志目录_Mac升级10.13需谨慎,Unity不显示资源的解决办法

    原标题:Mac升级10.13需谨慎,Unity不显示资源的解决办法 前言: 上个月苹果开发者大会展示了ARkit,一批前沿开发者立马跟上尝鲜.Unity的ARkit插件马上随之而来.作者按捺不住激动的 ...

  2. Win电脑截图黑屏解决办法

    电脑截图黑屏解决办法 方法一 1.按下"开始"+"R" 2.输入"regedit",确定打开 3.依次点击HKEY_LOCAL_MACHIN ...

  3. 微软发布Windows 11测试版开始菜单和任务栏等区域无响应的解决办法

    微软今早推出的Windows 11开发版和测试版均出现任务栏和开始等无响应问题,此问题影响较多用户正常使用. 微软经过调查后发现导致此问题的是后端服务器故障,部署的错误内容被推送给用户导致系统出现某些 ...

  4. Unity模型动画骨骼错位解决办法

    把骨骼动画导入进unity并设置成Humanoid时发现动画的动画有错位 只需要把模型下的Animation里的Motion里的Root Motion Node 设置成Root Transform就行 ...

  5. MUI下拉刷新与区域滚动冲突的解决办法,实际解决

    今天遇到了MUI下拉刷新的大坑,百度了好久也没看到有能用的解决办法. 自己查阅HTML 5+ API文档后,觉得可以监听scroll事件,当到达顶部时开启下拉刷新,非顶部时关闭即可.一尝试果然可行. ...

  6. android点击软键盘外面的区域关闭软键盘解决办法

    很多时候在一个页面有多个输入框或者输入框加选择框的时候,我们需要根据用户的点击去关闭软键盘. 在Activity中加入以下代码即可 /**重写dispatchTouchEvent* 点击软键盘外面的区 ...

  7. 【电脑端】腾讯视频PC端微信截图扫码失败解决办法

    微信截图扫码原因:借朋友腾讯视频账号玩 微信截图失败原因:QQ自带的扫码软件的保存机制有问题 PC端截图扫码解决办法:用电脑自带的截图软件[截图快捷键:win+shift+s] 流程:截图后微信发给朋 ...

  8. excel 如何 筛选,以及筛选后,在复制时 显示 不可对多重选定区域使用此命令的解决办法...

    excel 如何 筛选,以及筛选后,在复制时 显示 不可对多重选定区域使用此命令的解决办法 选中 第一行, 开始 筛选 选择 某一列 右下角的小三角 ,进行内容筛选 即可. excel 筛选后,在复制 ...

  9. 使用vue-seamless-scroll自动滚动插件复制出来的数据点击事件无效的解决办法

    引言:做可视化地图项目,使用vue-seamless-scroll实现表格数据自动滚动,有个bug就是复制出来的数据点击事件失效.这个插件底层的实现是cope的形式, 无限滚动原理:无限滚动的原理就是 ...

最新文章

  1. [POJ1741]Tree
  2. python在windows的开发环境_Python合集之Python开发环境在Windows系统里面搭建
  3. QCustomPlot实现实时动态曲线(包含手动设置XY轴显示的方法)
  4. Windows服务BAT命令-安装、卸载、启动、停止
  5. pythonturtle绘图代码 四叶草_python绘图四叶草
  6. rabbitmq channel对象的方法
  7. vivado2018.3和modelsim10.6d进行联合仿真
  8. spss数据预处理步骤_常用SPSS数据处理方法,你都会吗?
  9. phpStudy安装框架教程
  10. 学生计算机游戏代码,给计算机学院的学幼们贴一些游戏代码
  11. c语言编写生日祝福语大全,过生日的祝福语
  12. nginx单点故障的 处理方案keepalived
  13. c罗图片带字经典语言,6张适合发朋友圈的人生哲理经典语句图片带字表情包 句句触动人心...
  14. 独家专访腾讯云CTO王慧星:云技术变革上下二十年
  15. 《Java程序设计》课程代码题(九)
  16. iOS多级列表 - XQMultistageTableView
  17. angular之CanActivate守卫
  18. POJ 2245 Addition Chains(算竞进阶习题)
  19. 我国长征系列航天飞船剖解
  20. c语言分数乘法用指针,分数乘法练习题全套(整理打印版)

热门文章

  1. 小团团云上城在哪个服务器,云上城之歌小团团兑换码大全 小团团官方兑换码汇总[多图]...
  2. 0603贴片电阻阻值
  3. 对西部数据硬盘自带的加密进行修改密码和取消密码保护
  4. 美团外卖在全球已超过1亿次下载;福成股份1万头肉牛繁殖场于2021年12月18日建成 | 知消...
  5. LC2386. 找出数组的第 K 大和
  6. 简单验证用户输入身份证号和手机号
  7. id文本框适应文字_id怎么把字体框的尺寸缩小
  8. 【Python】零基础实现五行代码抓取视频任务~
  9. 中国锑市场规模分析与投资动态研究报告2022版
  10. 天河2号超级计算机的作用,揭示“天河2号”超级计算机能做什么?