Unity UGUI的CanvasScaler(画布缩放器)组件的介绍及使用

1. 什么是CanvasScaler组件?

CanvasScaler是Unity中UGUI系统中的一个组件,用于控制画布的缩放和适配。通过CanvasScaler组件,可以实现UI界面在不同分辨率下的自适应显示。

2. CanvasScaler的工作原理是什么?

CanvasScaler组件通过调整画布的缩放比例,使UI元素在不同分辨率下保持一致的显示效果。它根据设定的参考分辨率和屏幕分辨率的比例,计算出缩放比例,并将其应用到画布上。

3. CanvasScaler的常用属性有哪些?

  • UI Scale Mode:设置画布的缩放模式,有Constant Pixel Size(像素大小不变)、Scale With Screen Size(根据屏幕大小缩放)和Constant Physical Size(物理大小不变)三种模式可选。
  • Reference Resolution:设置参考分辨率,用于计算缩放比例。
  • Screen Match Mode:设置屏幕匹配模式,有Match Width Or Height(宽度或高度匹配)和Expand(扩展)两种模式可选。
  • Match:设置屏幕匹配模式为Match Width Or Height时,指定宽度或高度的匹配比例。
  • Physical Unit:设置物理单位,用于计算Constant Physical Size模式下的缩放比例。

4. CanvasScaler的常用函数有哪些?

  • SetScaleFactor(float scaleFactor):设置画布的缩放比例。
  • SetReferencePixelsPerUnit(float referencePixelsPerUnit):设置参考像素单位。
  • SetReferenceResolution(Vector2 referenceResolution):设置参考分辨率。
  • SetScreenMatchMode(ScreenMatchMode screenMatchMode, float matchWidthOrHeight):设置屏幕匹配模式和匹配比例。

5. CanvasScaler的使用示例代码:

示例1:设置画布的缩放模式为Scale With Screen Size

CanvasScaler canvasScaler = GetComponent<CanvasScaler>();
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
canvasScaler.referenceResolution = new Vector2(1920, 1080);
canvasScaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
canvasScaler.matchWidthOrHeight = 0.5f;

操作步骤:

  1. 获取CanvasScaler组件。
  2. 将uiScaleMode属性设置为Scale With Screen Size。
  3. 设置referenceResolution属性为参考分辨率,例如1920x1080。
  4. 将screenMatchMode属性设置为Match Width Or Height。
  5. 设置matchWidthOrHeight属性为匹配比例,例如0.5表示宽度和高度的匹配比例为1:2。

示例2:设置画布的缩放模式为Constant Pixel Size

CanvasScaler canvasScaler = GetComponent<CanvasScaler>();
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
canvasScaler.scaleFactor = 2f;

操作步骤:

  1. 获取CanvasScaler组件。
  2. 将uiScaleMode属性设置为Constant Pixel Size。
  3. 设置scaleFactor属性为缩放比例,例如2表示画布放大两倍。

示例3:设置画布的缩放模式为Constant Physical Size

CanvasScaler canvasScaler = GetComponent<CanvasScaler>();
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPhysicalSize;
canvasScaler.referencePixelsPerUnit = 100;

操作步骤:

  1. 获取CanvasScaler组件。
  2. 将uiScaleMode属性设置为Constant Physical Size。
  3. 设置referencePixelsPerUnit属性为参考像素单位,例如100表示每个单位对应100个像素。

示例4:动态设置画布的缩放比例

CanvasScaler canvasScaler = GetComponent<CanvasScaler>();
canvasScaler.SetScaleFactor(1.5f);

操作步骤:

  1. 获取CanvasScaler组件。
  2. 调用SetScaleFactor函数,设置画布的缩放比例为1.5。

示例5:动态设置画布的参考分辨率

CanvasScaler canvasScaler = GetComponent<CanvasScaler>();
canvasScaler.SetReferenceResolution(new Vector2(1280, 720));

操作步骤:

  1. 获取CanvasScaler组件。
  2. 调用SetReferenceResolution函数,设置画布的参考分辨率为1280x720。

注意事项:

  • 在使用CanvasScaler组件时,需要将Canvas的Render Mode设置为Screen Space - Camera或Screen Space - Overlay,否则CanvasScaler将无效。
  • 在设置参考分辨率时,应根据目标平台的分辨率进行调整,以保证UI在不同设备上的显示效果一致。

参考资料:

Unity UGUI的CanvasScaler(画布缩放器)组件的介绍及使用的更多相关文章

  1. Unity UGUI——提供可视功能的UI组件(Text)

    基本属性介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTXJfQUhhbw==/font/5a6L5L2T/fontsize/400/fill/I0J ...

  2. Unity UGUI Layout自动排版组件用法介绍

    Unity UGUI布局组件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

  3. Unity UGUI

    超详细的基础教程传送门:(持续更新中) Unity UGUI之Canvas&EventSystem:http://blog.csdn.net/qq992817263/article/detai ...

  4. Unity ugui屏幕适配与世界坐标到ugui屏幕坐标的转换

    我们知道,如今的移动端设备分辨率五花八门,而开发过程中往往只取一种分辨率作为设计参考,例如采用1920*1080分辨率作为参考分辨率. 选定了一种参考分辨率后,美术设计人员就会固定以这样的分辨率来设计 ...

  5. Unity UGUI —— 无限循环List

    还记得大学毕业刚工作的时候是做flash的开发,那时候看到别人写的各种各样的UI组件就非常佩服,后来自己也慢慢尝试着写,发现其实也就那么回事.UI的开发其实技术的成分相对来说不算多,但是一个好的UI是 ...

  6. Unity UGUI图文混排源码(三) -- 动态表情

    这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn. ...

  7. Unity UGUI之Canvas&EventSystem

    最近想写一套关于UGUI所有控件的基础使用教程系列,主要是根据本人的使用心得来写的,所以其中可能难以避免会有不正确的地方. 好了进入主题,既然是第一篇,我觉得我有必要先介绍一下UGUI必不可缺的两个组 ...

  8. Unity UGUI图文混排源码(二)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  9. Unity UGUI实现图文混排

    目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响.然后对于中文来说就是一个相当麻烦的事了,毕竟图文混排多用于游戏 ...

  10. 关于Unity中的刚体和碰撞器的相关用法(二)

    在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...

随机推荐

  1. Springboot整合Flowable6.x导出bpmn20

    项目源码仓库 BPMN2.0(Business Process Model and Notation)是一套业务流程模型与符号建模标准,以XML为载体,以符号可视化业务,支持精准的执行语义来描述元素的 ...

  2. 计算机网络之MAC和IP地址

    MAC地址 在局域网中,硬件地址,又称为物理地址或MAC地址. 目前现在的局域网中实际上使用的都是6字节的MAC地址,所以每一个以太网设备都具有唯一的MAC地址. MAC地址的格式 假设传输使用的是I ...

  3. shiro拦截axios请求导致@RequireRole注解失效

    文章目录 ShiroRequiresRole注解对于axios请求无效 场景再现 解决方案 网上的解决方案 最近在整理一个自己以前做过的系统,想要添加一些功能,发现shiro框架出现了点问题,觉得这个 ...

  4. 网络编程之java简易聊天室实现

    最近浅学习了一些关于网络编程方面的知识,视频是跟着狂神学习的,可能学习的不是很深 说到网络,相信大家都对TCP.UDP和HTTP协议这些都不是很陌生,学习这部分应该先对端口.Ip地址这些基础知识有一定 ...

  5. i < sqrt(n) 和 i*i < n 那一种写法更加高效?

    这两种写法效率依赖处理器.编译器和标准库.一般来说循环内的重复操作的性能差于循环外的单次操作. 参考文献 Which is more efficient to use in a for loop, i ...

  6. AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10)

    忽如一夜春风来,亚洲天后孙燕姿独特而柔美的音色再度响彻华语乐坛,只不过这一次,不是因为她出了新专辑,而是人工智能AI技术对于孙燕姿音色的完美复刻,以大江灌浪之势对华语歌坛诸多经典作品进行了翻唱,还原度 ...

  7. #Powerquery 利用M函数合并文件(CSV、Text、Xlsx)

    在日常工作中,我们往往会遇到多个文件需要合并的情况,本文一起探讨一下利用M函数合并文件的案例. 由于需要合并的文件的格式不同,也需要选择不同的M函数来进行合并,本文将分享三个格式的合并案例. 首先介绍 ...

  8. 2023-01-03:超过5名学生的课。编写一个SQL查询来报告 至少有5个学生 的所有班级,返回结果不限顺序。请问sql语句如何写? +---------+ | class | +-----

    2023-01-03:超过5名学生的课.编写一个SQL查询来报告 至少有5个学生 的所有班级,返回结果不限顺序.请问sql语句如何写? ±--------+ | class | ±--------+ ...

  9. 2022-12-19:大的国家。如果一个国家满足下述两个条件之一,则认为该国是 大国 : 面积至少为 300 万平方公里(即,3000000 km2),或者 人口至少为 2500 万(即 250000

    2022-12-19:大的国家.如果一个国家满足下述两个条件之一,则认为该国是 大国 : 面积至少为 300 万平方公里(即,3000000 km2),或者 人口至少为 2500 万(即 250000 ...

  10. 2020-10-09:假如我能拿到别人的URL,然后篡改数据(金额)发送给系统,如何避免这种事情的发生?

    福哥答案2020-10-09:#福大大架构师每日一题# [此答案来自知乎:](https://www.zhihu.com/question/424764253) 这种敏感url一般都有安全机制的:1. ...