适配缩放

本文详细探讨Unity中UGUI的三种Canvas模式:OverLay、Camera和World,讲解CanvasScaler的不同缩放方式,如ConstantPixelSize、ScaleWithScreenSize等,并介绍GriphicRaycaster的作用及AspectRatioFitter和ContentSizeFitter组件的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

关于UGUI的一些简单适配


Canvas
  1. OverLay:位于屏幕最上方,遮挡住3D场景以及Camera和World的UI,屏幕大小跟随设备自动匹配
  2. Camera:需要摄像机,屏幕大小跟随设备自动匹配,画布位于摄像机前方固定平面,依据摄像机所选层级进行渲染,可以来显示模型与UI
  3. World:

总结:

  1. OverLay:层级关系默认按照上下关系排序,对于添加了Canvas组件的子物体,可以修改SortOrder来改写遮挡关系
  2. Camera:Canvas的SortingLayer决定了子物体的SortingLayer,子物体可以通过添加Canvas组件修改自身SortingLayer以及OrderInLayer
  3. OverLay之间SortOrder,Camera之间SortingLayer,Camera内部OrderInLayer,OverLay>Camera
  4. 特效同样支持sortingOrder与sortingLayerName,当特效与UI的sortingLayerName一致时,调整特效的sortingOrder可以调整特效在UI中的显示位置,例如特效需要加在A的上面,特效的在orderLayerName一致的情况下,sortingOrder应该大于A的Canvas(从A往上找其父物体,第一个带Canvas的父物体的Canvas就是A的Canvas,A本身可以没有Canvas,此处Canvas类似于NGUI的panel概念)的sortingorder,如果特效要在A,B中间,那么A,B应该在2个不同的Canvas下面,特效的sortingorder也在A,B 2个Canvas的sortingOrder中间
  5. World与Camera类似

CanvasScaler
  1. ConstantPixelSize:像素大小始终不变,ScaleFactor可以控制缩放比例
  2. ScaleWithScreenSize:开发时参考分辨率
    • MatchWidthOr Height:横版高度缩放,竖版宽度缩放
    • Expand:缩放不剪切,屏幕分辨率与设定不同时,选择变化小的方向缩放显示
    • Shrink:缩放剪切,屏幕分辨率与设定不同时,变化打的方向缩放,超出部分剪切不显示
  3. ConstantPhysicalSize:物理相关的= =应用少 不懂

GriphicRaycaster

传递点击事件,确定事件对象
EventSystem负责管理,InputModule负责输入


AspectRatioFitter

使用HorizontalLayGroup实现等距拉伸,但拉伸容易导致图片不是等比例缩放这时候就可以使用AspectMode让高度随着宽度的变化等比例变化


ContentSizeFitter

动态长宽,例如Text输入加上这个组件,就动态改变Text长度

### 实现HTML网页响应式设计 为了使HTML网页能够在不同屏幕分辨率和缩放比例下良好适配,可以采用多种技术和方法。这些技术包括但不限于使用`<meta>` viewport标签、CSS媒体查询以及相对单位。 #### 使用Viewport Meta标签 在文档的头部添加一个特定的<meta>标签可以帮助控制页面在移动浏览器上的渲染宽度和缩放级别[^2]: ```html <meta name="viewport" content="width=device-width, initial-scale=1"> ``` 这段代码告诉浏览器视窗应该按照设备的实际宽度来设置其逻辑宽度,并且初始缩放比例设为1,即不放大也不缩小。 #### 应用CSS Media Queries Media queries允许样式表基于查看条件应用不同的样式规则。对于响应式设计而言,这通常涉及到检测屏幕宽度并相应调整布局元素的位置和大小[^1]: ```css /* 当屏幕宽度小于600px时 */ @media only screen and (max-width: 600px) { body { background-color: lightblue; } } ``` 上述例子展示了当屏幕宽度不超过600像素时改变背景颜色的方法;实际开发过程中可以根据需求定义更复杂的样式变化。 #### 流式网格与弹性盒子模型 除了固定的宽度外,还可以利用百分比或其他相对长度单位(如em或rem),使得容器及其内部组件能够根据父级元素的比例动态伸缩。Flexbox 和 Grid 布局提供了强大的工具集用于构建灵活而复杂的内容排列方式。 例如,在flexbox中可以通过如下配置让子项均匀分布在一个行内: ```css .container { display: flex; justify-content: space-between; /* 子元素之间留有间隔 */ } .item { flex-grow: 1; /* 各个item平均分配剩余空间 */ } ``` #### 图片和其他多媒体资源的处理 确保图像不会超出它们所在区域的最佳实践之一就是给img标记加上最大宽度属性[max-width: 100%],这样无论原始尺寸多大都会被限制在其包含块之内。 ```css img { max-width: 100%; height: auto; } ``` 此外,现代浏览器支持srcset特性,它可以让开发者指定多个版本的同一张图片供客户端选择加载最合适的那个版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值