转载
Canvas Scaler:
这是一个理解起来相当繁琐复杂的一个组件,但又是一个至关重要的组件,不彻底了解它,可以说对UGUI的布局和所谓的“自适应”就没有一个完整的认识。
Canvas Scale指的是UI Canvas整体的缩放比例,这个值在Canvas 的Render Mode为 Screen Space – Overlay 的情况下默认为1,在 Canvas 的 Render Mode 为 Screen Space – Camera 的情况下则不一定为1,会受到渲染UI的摄像机 参数影响(如果为Perspective 相机,会受到 Field Of View影响,如果是 Orthographic相机,会受到 Size影响)。
Canvas Scaler存在的意义:
为了适应不同的分辨率,我们可能会允许适当的UI整体性缩放,外加一些尽可能少的布局微调。 这样就能达到一个比较理想的效果。如果没有这个组件,Canvas的Scale默认情况下永远固定不变,那么分辨率变化时,只能单纯依靠锚点信息去调整UI,会对整体布局产生较大的影响,不能够达到“自适应”的目的。
什么是Pixelperfect?
PixelPerfect(完美像素)指的是一个UI素材本身的像素对应屏幕上一个像素的情况,这种情况下UI素材映射到屏幕上时没有任何拉伸和压缩,这种情况下UI显示效果非常清晰完美。
Ui Scale Mode–Scale With Screen Size
根据屏幕尺寸来调整UI的缩放值
Reference Resolution:
参考分辨率,即一开始制作时选定的屏幕分辨率,后面的选项参数都是根据它来计算的。
Screen Match Mode—Match Width Or Height
Match
Match是一个滑条,拉在最左时是Width ,最右时是Height,中间则是按比例混合。
当处于最左边时,屏幕高度对于UI大小完全没有任何影响,只有宽度会对UI大小产生影响。假设宽度为Reference Resolution宽度的x倍,则UI整体缩放为Reference Resolution状态下的x倍。也就是说只有宽度等于Reference Resolution宽度时,才能做到pixel perfect,否则像素就会有拉伸
当处于最右边时,与上述情况正好相反,决定整体缩放值的是高度,而宽度则没有任何影响
处于中间某处时,对上述两者的影响进行权重加成
Screen Match Mode—Expand
当屏幕分辨率大于参考分辨率时,选择变化较小的一个方向(横向还是纵向),作为放大Canvas Scale的标准,另一方向上的变化则是在整体缩放以后再进行补偿性的变化。此举旨在减少扩大分辨率时由于非等比扩大而对UI整体布局造成影响。适合制作较小标准尺寸,扩充到较大屏幕。
例如:Reference Resolution为800600,(假设此时Canvas Scale为(1,1,1))。如果实际分辨率为800800,那么Canvas Scale还保持为(1,1,1)因为宽度没有发生变化,只是单纯的高度增加了200。所以势必对布局造成一定得影响。1000600的情况也是一样,Canvas Scale没有变化,只是单纯宽度增加了200。但如果实际分辨率变为1000800,那么Canvas Scale就变成(1.25,1.25,1.25)。因为宽度是参考分辨率宽度的1.25倍,高度是1.33倍,那么取较小的1.25。 这个1.25倍的意义是:整体Canvas渲染放大1.25倍,横向或纵向的变化超过了1.25倍,则靠拉伸Canvas来变化,此时因为这部分变化,可能会对布局产生一些相对较小的影响,例如相对位置、某些元素的长宽比。

Screen Match Mode—Shrink
和Expand类似,但是更适合于缩小的情形。它会在屏幕尺寸缩小时,通过缩小CanvasScale尽量减少由于非等比缩小对布局产生的影响。按照影响较小的一个方向缩小的比例去缩小CanvasScale,然后再通过变形调整另外一个方向。
Ui Scale Mode—Constant Pixel Size
固定的UI缩放值
Scale Factor
直接设定UI的Canvas Scale,例如,设定为2,则Canvas Scale为标准状态下的2倍

转载[UGUI]深入理解Canvas Scaler相关推荐

  1. UGUI中的Canvas、Camera和Canvas Scaler

    原文:http://www.jianshu.com/p/96fd1fbe8409 投影空间和屏幕空间 先不说UI,如果是一个普通渲染流程,一个Cube普通地被渲染. 800X600的屏幕中,右边的Cu ...

  2. 理解Canvas的save()和restore()方法

    save()和restore()方法是绘制复杂图形必不可少的方法.它们分别是用来保存和恢复 canvas 状态的,都没有参数. Canvas 状态是以堆(stack)的方式保存的,每一次调用 save ...

  3. UGUI组件之Canvas 组件简单笔记

    Canvas 组件介绍 Canvas 组件的用途是用于 UGUI 系统内的 UI 游戏物体的渲染. 如果没有该组件,所有的 UGUI 游戏物体都将无法显示. 而 Canvas 组件本身又分为三种渲染模 ...

  4. 【转载】全面理解javascript的caller,callee,call,apply概念(修改版)

    今天写PPlayer,发现有段代码引起了我的兴趣: var Class = { create: function() { return function() { this.initialize.app ...

  5. (转载)深入理解Linux中内存管理---分段与分页简介

    首先,必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术. 来回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的.换句话说,就是程序在运行的过程中访问的都是物理地址.如果这个 ...

  6. 【转载】C# 理解泛型

    术语表 generics:泛型 type-safe:类型安全 collection: 集合 compiler:编译器 run time:程序运行时 object: 对象 .NET library:.N ...

  7. (转载)深入理解WeakHashmap

    WeakHashmap (一) 查看API文档,WeakHashmap要点如下: 1. 以弱键 实现的基于哈希表的 Map.在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条目.更 ...

  8. (转载)如何理解RxJava中的join操作

    转载:http://avenwu.net/2016/05/10/understand-the-join-operation-in-rx/ 前言 先前写过一篇文章,介绍Rx中不容易理解的概念(Rx那些不 ...

  9. 朴素贝叶斯分类器的应用-转载加我的理解注释

    2019独角兽企业重金招聘Python工程师标准>>> 生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifie ...

  10. (转载+ 修改) 深入理解UIWindow

    转载于  http://www.cnblogs.com/smileEvday/archive/2012/11/16/UIWindow.html 每一个IOS程序都有一个UIWindow,在我们通过模板 ...

最新文章

  1. cacti命令行添加监控详解
  2. 网站建设全阶段培养共分三期
  3. 格伦布编码——rice编码无非是golomb编码M为2^x的特例
  4. Centos7更新阿里yum源
  5. 一些不常用的代码汇总(不断更新)
  6. b+树时间复杂度_第15期:索引设计(索引组织方式 B+ 树)
  7. syntaxnet python调用
  8. kafka之六:为什么Kafka那么快
  9. pytest与unittest区别
  10. selenium浏览器操作以及对象定位
  11. php js的视频教程,【JS视频教程推荐】2021年最值得推荐的5个JavaScript视频教程
  12. 作词家下岗系列:教你用 AI 做一个写歌词的软件!
  13. Redis常用命令总结
  14. 开发Web版一对一远程直播教室只需30分钟 - 使用face2face网络教室
  15. python spss modeler 比较_非常值得收藏的 IBM SPSS Modeler 算法简介
  16. js click与onclick事件绑定,触发与解绑
  17. PX4 FMU [17] stabilize
  18. 数据结构期末大题速成
  19. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 概率与期望+高斯消元
  20. matlab多项式计算(求根、由根创建、导数、积分)

热门文章

  1. 同时打开多个独立Excel窗口
  2. python c语言实现_使用C语言为python编写动态模块(3)--在C中实现python中的类
  3. initialize php,thinkPHP中_initialize方法实例分析
  4. 洛谷3966 BZOJ3172 单词 AC自动机
  5. 小米手机相机的专业模式
  6. 【数据挖掘】K-Means 一维数据聚类分析示例
  7. Java项目:基于jsp+mysql+Spring+SpringMVC+mybatis的高速公路收费管理系统
  8. 网络攻击中常见掩盖真实IP的攻击方式及虚假IP地址追踪溯源方法
  9. 为什么面向对象糟透了?
  10. 强者的系统:高观点下的人生