热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅谈Unity中的Canvas及三种渲染模式

浅谈Unity中的Canvas及三种渲染模式目录浅谈Unity中的Canvas及三种渲染模式橙子前言一、Canvas是什么?二、如何创建Canvas三、Canvas组

浅谈Unity中的Canvas及三种渲染模式


目录

  • 浅谈Unity中的Canvas及三种渲染模式
  • 橙子前言
  • 一、Canvas是什么?
  • 二、如何创建 Canvas
  • 三、Canvas 组件的RenderMode 参数
    • 1.Screen Space - Overlay 模式
    • 2.Screen Space - Camera 模式
    • 3.World Space 模式
  • 四、总结
  • 五、结束语




橙子前言

最近在搞Unity的性能优化,涉及到Canvas这个方面了,想着单独拿出来,给大家讲讲Canvas这个东西,到底是什么,以便于解开新手小白心中的疑惑。
当然,如果你是0基础,就先看看怎么用,此教程对于入门级适用。



提示:以下是本篇文章正文内容,下面案例可供参考


一、Canvas是什么?

Canvas:翻译后的解释为:画布
我理解的是:使用UGUI来进行UI开发,离不开Canvas组件,所有的 UI 元素,要么自己包含 Canvas 组件,要么是 Canvas 组件所在 GameObject 的子节点。


二、如何创建 Canvas

创建Canvas
你在 Hierarchy 视图右击空白处->UI->Canvas可以直接创建一个 Canvas,然后添加其他 UI 元素作为其子节点。


三、Canvas 组件的RenderMode 参数

Canvas 的 RenderMode 参数


1.Screen Space - Overlay 模式

Canvas 覆盖屏幕,且永远覆盖在其它元素的上层,也就是说 UI 会遮挡场景中的其它元素。
Overlay 模式下 UI 总是渲染在3d元素的上面
当 RenderMode 为 Screen Space - Overlay时,Canvas的其它参数包括:


  • Pixel Perfect:UI元素精确到像素对齐,边缘更清晰,但是在UI调整和适配时会有更大的计算量(个人理解)
  • Sort Order:Canvas 的深度。多个 存在多个Canvas时,Sort Order 值更大的Canvas会遮盖住 Sort
    Order 值小的 Canvas
  • 注:多个 Canvas 深度取值相等时,Hierarchy 视图中后面的 Canvas 显示在下,这一点与 UI
    元素(如Image的规则相反)

2.Screen Space - Camera 模式

和 Overlay 模式相仿,Canvas覆盖整个屏幕空间画布也是填满整个屏幕空间。不同之处在于,Canvas 被放置于指定摄像机的前方。
Canvas 被放置在摄像机的前方
这种模式下面 UI 并不一定能渲染在 3d 元素之上
Camera 模式下,3d 元素可能渲染在UI之上


  1. 必须在摄像机的远近平面之间才会被渲染
  2. 即使摄像机是 Perspective 模式,Canvas 距离摄像机的远近依然不会影响其显示大小
  3. 其它3元素可以和 Canvas 产生遮挡关系,距离摄像机更近的元素会遮盖住 Canvas 上面的 UI
  4. 摄像机的缩放/平移/旋转,以及 fov 的变化,不会影响 Canvas 显示结果,Canvas
    永远是放置在距离摄像机视口一定距离的地方,且与摄像机水平视线垂直

Screen Space - Camera 的参数包括:
Screen Space - Camera 模式 Canvas 的参数


  • Pixel Perfect :同 Overlay 模式含义
  • Render Camera :指定的用来渲染 Canvas 的摄像机
  • Plane Distance:Canvas 平面距离摄像机的距离
  • Sorting Layer:指示 Canvas 的深度,可以手动添加。当存在多个模式为 Screen Space 的 Canvas
    时,Sorting Layer 决定了显示的优先级。
  • Order in Layer:多个 Canvas 具有相同的 Sorting Layer 时,根据 Order in Layer
    来确定显示优先级。

3.World Space 模式

此种模式下,Canvas 与场景中其它3D元素没有区别
World space 模式的Canvas 本质上就是3d 元素
此时


  • Canvas 可以调整 RectTransform 的数值
  • 摄像机的平移旋转缩放及fov都会影响 Canvas 的显示
  • 需要 EventCamera 来指定接受事件的摄像机

四、总结


  1. 不同模式的 Canvas之间,Screen Space - Overlay 的 Canvas 永远显示在最前面,Screen Space
    -Camera 和 World 的显示关系决定于 World Canvas 距离摄像机的位置以及 Screen Space - Camera Canvas 的 Plane Distance

  2. 相同的 Screen Space - Overlay Canvas :显示优先级由 Sort Order 确定

  3. 相同的 Screen Space - Camera:显示优先级由 Sorting Layer 和 Order in Layer 确定


五、结束语

不及硅步,无以至千里。
不积小流,无以成江海。
每天进步一点点 谢谢您的观看。

觉得对自己有帮助,欢迎关注、收藏、转发!我们下期再见


推荐阅读
  • 110. Balanced Binary Tree [Easy] 平衡树/递归
    本文介绍了一道关于平衡树的题目,通过递归和辅助函数来判断一个二叉树是否平衡。辅助函数返回根结点的深度,如果左子树或右子树不是平衡树,则返回-1。主函数根据辅助函数的返回值判断二叉树是否平衡。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了如何使用n3-charts绘制以日期为x轴的数据,并提供了相应的代码示例。通过设置x轴的类型为日期,可以实现对日期数据的正确显示和处理。同时,还介绍了如何设置y轴的类型和其他相关参数。通过本文的学习,读者可以掌握使用n3-charts绘制日期数据的方法。 ... [详细]
  • 本文整理了Java中org.apache.solr.common.SolrDocument.setField()方法的一些代码示例,展示了SolrDocum ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • SEEBURGER SAP GTS解决方案:数字化助力企业实现海关流程数字化
    SEEBURGER作为SAP的合作伙伴,在2019 SAP GTS信息交流会上分享了SEEBURGER SAP GTS解决方案的应用案例,介绍了如何利用数字化助力企业实现海关流程数字化。SEEBURGER的集成技术和解决方案支持SAP GTS产品和服务的推广及应用,通过数据通讯和报文格式转换满足与海关当局的电子数据交换需求。该解决方案能够帮助企业管理全球贸易,保证贸易规范,优化跨境供应链,提升企业合规性。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
手机用户2602937435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有