当前位置: 首页 > article >正文

关于TextureRender适配的解决方案

当我们用摄像机渲染出一个图片,显示在UI的时候,会发现,你如果自适配,那么就会拉伸图片,导致人物或者场景变形。
我最近就遇到了这个事,这里我给出几种问题和解决方案:

1

:当我们想要整个摄像机渲染出来的RawImage都能适配,那么可以直接用一下两个锚点进行适配
在这里插入图片描述
但是这样会出现要么高度缺了,要么宽度缺了,如图
在这里插入图片描述
在这里插入图片描述
这个时候,可以要求美术做背景高度或者宽度长一点的图,这个本就是美术应该做的事,这里也就可以解决大部分的问题了。

2

:那有人可能也会遇到,需要在这里场景里面增加3D建模,那这个时候用上面的方法,会出现一个问题,即美术给你的长图,你的摄像机照出来了,但是范围有限,你的RawImage可以设置锚点适配,但是会变形,这个时候往往策划要求的就是3D建模不要变形,并且在背景中大小适中。
这第二做法会导致背景图变形,但是模型不会变形。
设置RawImage的锚点在这里插入图片描述
用代码获取屏幕大小和RawImage
在这里插入图片描述
这个是获取的Canvas的大小
![在这里插入图片描述](https://img-blog.csdnimg.cn/6d49b21a712c43d5a8c74be9eab41cc1.png

我的初始屏幕大小是960*1920,
这里是强行吧RawImage铺满整个屏幕
然后ShowT是我的3D模型,原理就是拉伸背景,然后缩小模型大小,这样显示出来的模型就是正常的了

3

:那如果你要背景不拉伸,那就获取Canvas的大小后,你可以得到宽高,那么让你的RawImage用其中一个宽或者高,举个例子,我们现在把我们的RawImage的宽等于Canvas的宽,那么就剩下高了,高会有两种特别的情况,有一种会超出屏幕,这个是可以接受的范围(如果你不能接受,那没法, 你得去找你的美术了,等下给你讲为什么),另外一种就是比屏幕高度小,穿帮了,这是不能接受的,那我们先解决这个穿帮的,因为我们有Canvas的高度,可以直接设置RawImage的高度等于Canvas的高度,然后我们还有我们初始的屏幕宽高(例如我的是9601920)通过我们的1920/Canvas的高度,可以得到比X,用960/X,可以得到我们想要的自适配宽度,判断宽度是否,小于Canvas的宽度,不是,适配完毕,
是,那继续适配,用我们得到的宽度/Canvas的宽度,这个时候又可以得到一个比Y,这里需要差比(1-Y),然后设置RawImage的宽度等于Canvas的宽度,用Canvas的高度
(1+1-Y)可以得到需要的高度。
现在解释一下为什么超出屏幕是合理的,举例,一个图片是100100,但是我的手机是100150,如果不能接受变形,我只能把图片变成150*150,这样就必然会超出屏幕,是无法避免的。

授人以鱼不如授人以渔。虽然这次没有全部代码能抄,但是学会这个逻辑自己做,比抄代码好多了,以后也能自己用上


http://www.kler.cn/a/7566.html

相关文章:

  • vue-router的push和replace的区别
  • HbuilderX 插件开发-模板创建
  • node对接ChatGpt的流式输出的配置
  • 双子数(枚举素数)
  • 微信小程序进行md5加密 ,base64 转码
  • 使用 Redis 作为消息队列 - Pub/Sub, List, SortedSet
  • Sentinel入门使用
  • 第九章-DOM与CSS
  • Linux系统【centos7】怎么手动部署网站?
  • 台灯学生用哪个牌子最好?精选学生专用台灯第一品牌
  • 【从零开始学习 UVM】11.5、UVM Register Layer —— 后门访问 实战项目(RAL实战,交通灯为例)
  • 网站怎么优化出排名
  • SQLyog图形化界面工具【超详细讲解】
  • Go并发编程 -- 原子操作 sync/atomic
  • C++学习——解决一个double free or corruption (!prev)错误
  • 在MDK5(Keil537)中同时配置STM32和C51的环境(简单可行)
  • 【设计模式】创建型-单例模式
  • Android上传aar到本地仓
  • MongoDB 插入文档
  • 考勤、充电,绑身份,你的人员定位系统就缺它了!
  • 大数据 | 实验一:大数据系统基本实验 | 熟悉常用的HDFS操作
  • scroll-view不能滚动问题
  • RK3588平台开发系列讲解(同步与互斥篇)信号量介绍
  • Javscript字符串的常用方法有哪些?
  • Python 进阶指南(编程轻松进阶):七、编程术语
  • Python 进阶指南(编程轻松进阶):二、环境配置和命令行