首先说一下区域截图,先上代码,简单易懂。
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. 8天学通MongoDB——第二天 细说增删查改
  2. java datetime int_关于jodatime:Java中DateTime对象之间的小数天数
  3. DSP集成开发工具CCS的Git工具使用说明(三)
  4. 深入了解softmax
  5. 【CentOS Linux 7】实验4【Shell编程】
  6. 一次前后端分离的实践
  7. 基于.NetCore结合docker-compose实践Gitlab-CI/CD 排坑指南
  8. url传值的一个问题解决
  9. 2019五一建模A题思路
  10. 计算机文件自动备份到移动硬盘,1个让移动硬盘自动备份的简单方法!
  11. RGB888转换为RGB565格式
  12. python倒排索引
  13. 条件表达式a?b:c是什么意思
  14. DeepReID: Deep Filter Pairing Neural Network for Person Re-Identification
  15. 阿里巴巴九大美女高管个个身价上亿,你最佩服谁?
  16. 《论语》原文及其全文翻译 学而篇11
  17. 图解最常用的 10 个机器学习算法
  18. allegro 16.6或者17.0把45度线转换成圆弧
  19. 【Bypass】12306铁路自动抢票软件,增强通知
  20. ts 类型声明有三种

热门文章

  1. 汇总一下Intellij IDEA常用的牛逼插件
  2. JAVA 视频流截图截视频保存
  3. python读写hdfs文件的实用解决方案
  4. 前大灯是近光灯还是远光灯_远光灯和近光灯图解,近光灯和远光灯怎么开
  5. 竞赛快速及常用(后续更新)
  6. APE直接用Nero刻录成CD
  7. xss实现获取网站源码
  8. 如何学好设计,做好架构? 核心思想才是关键,阿里P7深入Binder原理讲解
  9. 人工智能学习--文本检测初探
  10. 太极发送卡片软件_qn卡片版app下载-QN模块卡片版软件 v35_5577安卓网