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

郑州建设电商网站厦门旅游网站建设

郑州建设电商网站,厦门旅游网站建设,品牌推广策略,永久免费虚拟主机申请目录 宽度不变策略 高度不变策略 宽度不变策略 开发分辨率 750*1334 (宽高比:0.56) 真机分辨率 1170*2532 (宽高比:0.46) 真机宽高比<开发宽高比&#xff0c;采用宽度不变策略 理由&#xff1a;小于代表真机高度比开发高度更大&#xff0c;因此不需要担心高度上…

目录

宽度不变策略

高度不变策略


宽度不变策略

开发分辨率 750*1334     (宽高比:0.56)
真机分辨率 1170*2532   (宽高比:0.46)   
真机宽高比<开发宽高比,采用宽度不变策略

理由:小于代表真机高度比开发高度更大,因此不需要担心高度上的遮挡,而应担心宽度的遮挡,为了避免宽度上有遮挡问题,因此保证宽度不变策略;

左图是开发分辨率下的情况(宽度和高度均正常 设计上就是如此)

右图是真机分辨率下适配后的情况,保证宽度不变(可见宽度上的绿色边缘处是紧贴着屏幕边缘),但是高度绿色边缘没有紧贴白色的UI(问题1)(下面的一行白色是UGUI UGUI紧贴着屏幕底下边缘)

不启用适配状况:若不启用摄像机适配会呈现如下图:

宽度会被遮挡一部分!因此我们要保证宽度不变

问题1(高度绿色边缘没有紧贴白色的UI)解决思路:

将整个3D场景所有元素放于一个根节点下,往下移动一定距离来紧贴白色UI

移动的相对距离是  (适配后的摄像机size - 开发时摄像机size),移动后得到如下图

注意相对的是指摄像机空间下的相对距离(Y轴,即上下位移)

如下脚本挂载摄像机下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class CameraAdapt : MonoBehaviour
{//开发宽度private int width = 750;//开发高度private int height = 1334;//摄像机原始sizeprivate float cameraSize;//场景物体根节点public Transform levelTrans;//CanvasScaler组件public CanvasScaler canvasScaler;//场景物体根节点世界位置Vector3 levelWorldPos;void Start(){//记录原始大小cameraSize = GetComponent<Camera>().orthographicSize;//场景世界位置levelWorldPos = levelTrans.position;AdaptCamera();}private void AdaptCamera(){Camera camera = Camera.main;float devRate = (750f / 1334f);float nowRate = (Screen.width * 1.0f / Screen.height);Debug.Log("开发宽高比:" + devRate);Debug.Log("真机宽高比:" + nowRate);//真机宽高比 > 开发宽高比时 , 例如  0.75 > 0.56  (目前是0.56) 说明真机更倾向高度不变策略  少于时更倾向宽度不变bool useHeight = false;if (nowRate > devRate){useHeight = true; //你可尝试注释这一行来查看ipad之类的适配情况,如果依旧保持宽度不变 会发生某些场景物体可能会因高度变小而无法看到。}Debug.Log("Screen.width :" + Screen.width);Debug.Log("Screen.height :" + Screen.height);float changeRate = (width * 1.0f / height) * (Screen.height * 1.0f / Screen.width);Debug.Log(changeRate);//保证高度不变if (useHeight){//原Unity策略就是高度不变,所以不需要任何算法,直接保持原样即可(这里cameraSize就是原始size)float targetHeight = cameraSize;camera.orthographicSize = targetHeight;//修改Canvas的适配为高度不变策略canvasScaler.matchWidthOrHeight = 1;}else{//保证宽度不变float targetWidth = cameraSize * (width * 1.0f / height);camera.orthographicSize = targetWidth * (Screen.height * 1.0f / Screen.width);//修改Canvas的适配为宽度不变策略canvasScaler.matchWidthOrHeight = 0;//在宽度不变情况下,拉长高度而导致场景空白区域变多后,将场景元素向下对齐的方案//即真机摄像机单位高度值 - 开发单位高度值 = 单位高度差值float deltaHeight = camera.orthographicSize - cameraSize;Debug.Log("camera.orthographicSize:" + camera.orthographicSize + ",cameraSize:" + cameraSize + ",deltaHeight:" + deltaHeight);//重置场景根节点世界坐标levelTrans.position = levelWorldPos;//延迟3秒后再偏移,目的是为了看到这个过程是如何变化让场景向下对齐StartCoroutine(DelayToSetPos(deltaHeight));}}IEnumerator DelayToSetPos(float deltaHeight){yield return new WaitForSeconds(1f);//场景根节点世界坐标 转 位于摄像机下的局部坐标Vector3 levelLocalPos = this.transform.InverseTransformPoint(levelWorldPos);//进行高度偏移 (高度单位差) 即向下对齐levelLocalPos = new Vector3(levelLocalPos.x, levelLocalPos.y - deltaHeight, levelLocalPos.z);// 位于摄像机下的局部坐标 转 世界坐标  赋予场景根节点levelTrans.position = this.transform.TransformPoint(levelLocalPos);}// Update is called once per framevoid Update(){//按下空格即可再次适配 (可以动态改Game 分辨率 测试不同分辨率下的情况)if (Input.GetKeyDown(KeyCode.Space)){AdaptCamera();}}
}

其他场景信息:

 

高度不变策略

当真机宽高比 > 开发宽高比时,采用高度不变策略

主要变化就是Canvas Scaler,摄像机size是保持不变的,Unity原本就是高度不变策略。

如果不采用高度不变策略会得到如下图,高度上会有场景元素被遮挡!

注释一行即可测试

 


文章转载自:

http://svSKBG1r.qbzfp.cn
http://gxfOVJjq.qbzfp.cn
http://apn2EB2b.qbzfp.cn
http://iPzHpJJi.qbzfp.cn
http://yNYIsONf.qbzfp.cn
http://B2okyImQ.qbzfp.cn
http://IFJHeVWU.qbzfp.cn
http://QfeQAR2q.qbzfp.cn
http://wANQaOZp.qbzfp.cn
http://4ELI1Bw0.qbzfp.cn
http://bnyWl4KB.qbzfp.cn
http://N5sdjuqu.qbzfp.cn
http://gRDRMhG9.qbzfp.cn
http://r7JxASrr.qbzfp.cn
http://37KcUeWq.qbzfp.cn
http://QPQv3IvO.qbzfp.cn
http://18IU4neN.qbzfp.cn
http://k98l5hKv.qbzfp.cn
http://j2isgJOm.qbzfp.cn
http://VChZ3hwT.qbzfp.cn
http://LBr0uQwb.qbzfp.cn
http://amnHp1EB.qbzfp.cn
http://AxOIwpgE.qbzfp.cn
http://wbiI15rU.qbzfp.cn
http://ek0jgd4v.qbzfp.cn
http://S0WjqsYE.qbzfp.cn
http://pICHDWhS.qbzfp.cn
http://ViNfR1yv.qbzfp.cn
http://0P4EeNI5.qbzfp.cn
http://xvvWxMUx.qbzfp.cn
http://www.dtcms.com/wzjs/715967.html

相关文章:

  • 苏州企业商务网站建设个人博客网站设计
  • 人力资源三网站建设制作h5页面的软件
  • php做网站示例网上销售型企业网站
  • 美食网站怎么做dw长沙网络营销介绍
  • 营销型网站建设的5大技巧服务类网站建设服务公司
  • 陕西住房与建设厅网站湖北正规网站建设质量保障
  • 做自动化设备哪个网站网站空间提供
  • 汕头市广州新业建设有限公司网站科技官网
  • 邯郸网站建设优化移动端ui
  • 中国城乡建设部网站房贴文件电子商务网站成功的关键是
  • 有好点的网站建设公司吗网络广告一般收费价目表
  • 宁波网站建设制作推广wordpress如何导入md文件夹
  • WordPress 代码建站自己做的网站如何包装
  • 建外贸企业网站厦门建设局投诉电话
  • 汉阴县住房和城乡建设局网站做公司网站详细步骤6
  • xml的网站地图织梦制作icann官方网站
  • 网址导航被更改了怎么换回来什么是seo和sem有什么区别
  • 做后期的网站北京英文网站建设的原则
  • h5免费模板网站济南网站seo
  • 网站规划wordpress文章乱码
  • 免费的舆情网站下载有哪些网站做的比较好的
  • 山东省建设厅招标网站首页淘宝网站的建设目的是什么
  • 网页设计相关网站个体工商网上年检
  • 商城网站中商品模块有哪些功能公司简介模板设计图片
  • 班级网站模板响应式网站psd尺寸
  • 互联网企业投诉服务平台天津百度快速优化排名
  • 网站建设维护一年费用无锡市网站建设
  • 网站帮助中心设计建设机械网站平台
  • 为什么上不了建设银行个人网站商丘网站推广的方法
  • 上海网站建设公司推荐排名网站制作报价明细