Unity --- UGUI(Unity Graphical user interface)--- Canvas画布

news2024/9/28 15:28:02

1.UI --- User Interface --- 使用者与机器之间的交互界面

 

 

 

 

1.所谓的自适应系统指的是分辨率的适应:

比如在一个分辨率下做的UI放到另一个分辨率下显示时,如果没有自适应系统的话就会导致UI过大,过小,被辟成一半等等情况,而有了自适应系统之后,放到另一个分辨率下的UI会自动根据当前分辨率改变自身大小来进行显示。

2.深度系统指的是 --- 图片的显示顺序 --- 在老式的OnGui中,图片的显示顺序(是否被覆盖或者覆盖别人)取决于图片的深度值,而在UGUI中则是变为 --- 子物体优先于父物体显示的逻辑


接下来开始介绍基础的一些UI物体

没错!是UI物体 --- 这些都是场景中存在的游戏物体

1.选中UI后就会出现这么多的UI物体,选中任意一个UI物体后Unity就会自动在场景中创建该UI物体

2.在创建一些UI物体前,如果没有创建Canvas画布物体的话,Unity会自动创建画布物体,并将这些UI物体作为画布物体的子物体创建 --- 如果强行将这些UI物体拉出来不作为子物体的话,Unity会报错

3.还有一些UI物体则是作为单独的游戏物体创建

1.在画布中操作UI游戏物体时,最好先选则上图中圈中的两个选项,这样能很好的方便我们进行操作 

2.画布的大小是根据game面板处的屏幕大小自适应生成的,我们在画布上生成的任何图片/文字都会在game面板处的屏幕的对应位置处显示

3.当我们通过四边的蓝点来放大缩小UI的时候,出现在下面和左边的数字分别表示的是当前AI的长和宽,单位是像素

4.在画布中图片的覆盖顺序取决于其在Hirarchy面板中的排列顺序(UGUI的特点) --- 规则是排在后面的UI物体会覆盖排在前面的UI物体

 

 5.如果是两张画布重叠在一起的话,其图片覆盖顺序取决于Insepector面板中的画布的属性值 --- Sort Order

Sort Order大的画布会优先覆盖Sort Order小的画布, --- 也就是说Sort Order大的画布的图片优先覆盖Sort Order小的画布中的图片

画布之间谁盖谁,取决于画布的属性;画布之内谁盖谁,取决于排列的顺序

1.接下来开始介绍画布的渲染模式 :

A.overlay --- 覆盖在...上面 ; Screeen Space --- 屏幕空间 -- 说白了就是2DUi模式

而World Space世界空间 则是3D UI模式

2.Screen Space --- 2d Ui模式 --- 在2d模式下,UI会与摄像机保持相对静止 --- 也就是说摄像机动的时候UI会跟随着一起动。

接下来介绍2d模式下的两个分支:

(PS:使用覆盖模式的时候,UI物体的屏幕坐标与其世界坐标相重合

a.Overlay --- 覆盖 --- 在这个模式下,当摄像机所拍摄到的非UI物体与UI重合的时候,UI会覆盖掉非UI物体 --- 原理是渲染顺序不同:摄像机会先渲染非UI物体,然后再渲染UI物体,这时呈现出的效果就是UI物体覆盖在了非UI物体上

b.选择Camera模式的话 会出现一个属性 --- Render Camera --- 这个参数需要我们传一个摄象机参数作为UI的渲染摄象机

如果我们没有传摄象机参数给这个属性的话,Carema模式和Overlay模式没有区别

给定了一个渲染摄象机后,对应画布的大小,方向等等各种属性都会受到渲染摄象机的影响

比如渲染摄象机的视锥拉长,则画布会变小,渲染摄象机旋转,画布就会跟着旋转

1.用了摄象机模式后,画布还会出现一个属性 --- Plane Distance

通过设置这个属性的大小,我们可以改变摄象机与画布之间的距离 

如果有一个非UI物体离摄象机更近的话 --- 则出现的结果是非UI物体覆盖住UI物体

反之UI物体更近的话那就是UI物体覆盖住非UI物体

 1.使用Carema模式的时候,我们需要传一个摄象机,而这个摄象机一般都不是主摄像机 ---

主摄象机一般都是游戏中位置变化最频繁的摄象机,如果在Carema模式中使用主摄象机的话,摄象机一动画布就要跟着一起动,而画布又会带着其UI子物体移动 --- 这些移动都会造成CPU和GPU的性能消耗

2.那么使用Carema模式时的正确操作是什么呢?

a.创建一个新的摄象机游戏物体 --- UICarema --- 将这个摄象机作为参数传给画布中的属性 ---

此时这个UICarema就是专门用来渲染UI画布的

b.当一个场景中出现了多个摄象机时,每个摄象机都会往Game屏幕上输出渲染后的画面 --- 此时就需要考虑不同摄象机渲染出的画面的覆盖问题 --- 这个问题由摄象机组件中的depth深度属性决定

c.深度值大的摄象机渲染出的画面会覆盖深度值小的摄象机渲染出的画面

d.我们让UICarema的深度值大于主摄象机的深度值时,UI画面就会覆盖主游戏画面,反之亦然

e.这时还有一个问题需要考虑 --- 那就是 clear flags问题

参考文章:摄象机中clrea flags四个属性的区别(摄象机“拍摄完”(或者说渲染)后剩下的都是空白部分 --- 而这些空白部分的显示(或者说填充)方式取决于 Clear flags属性 --- 默认的是用天空盒来进行填充)

如果我们只用默认的天空盒的话就会导致UICarema的画面会将主摄像机的画面完全覆盖,而不是我们所希望的只有UI物体覆盖主摄象机画面

此时需要我们改变属性,选择 Depth only --- 此时UI摄象机只会将自己拍摄到的UI物体进行渲染和覆盖,空白的部分不显示。

f.再补充一点 --- 为了避免两个摄象机拍摄到同一个游戏物体后导致画面中出现了两个同样的游戏物体这种情况 --- 我们还需要进行以下操作:

设置一个UI层,所有的UI物体都归属到UI层中,在UICarema的剔除遮罩(Culling Mask)中选中UI层,让摄象机只渲染UI游戏物体。

(PS:Unity已经帮我们创建好了UI层了,直接选就可以了)

对了!还需要将主摄象机中的Culling Mask属性中的UI层取消勾选,让主摄象机不绘制UI层

1.创建一个UI摄象机之后必做的两步:1.将UI摄象机放到世界的某个犄角旮旯处,避免其与其它摄象机发生冲突;2.将UI摄象机的Culling Mask改为UI层,使其只能拍摄到处于UI层的游戏物体。1

2.一个摄象机成为UI摄象机之后,其投影方式会发生改变 --- 具体是:由近大远小变为平行投射

具体的变化是:近大远小时,3d物体离摄像机越近,则在画面中越大,而在平行投射中,3d物体无论离摄象机近还是远,其在画面中的大小都是一致的。


第三种模式 --- Word Space模式

1.World Space模式是用来做3DUI的

2.它的特点是能让画布变成一个普通的游戏物体,同时还让其继续拥有画布的特性

具体的改变:1.不像overlay模式一样创建出画布后就会覆盖整个主摄象机画面

2.不像carema模式一样需要一个UI carema

自身的特点:1.能像一个普通的游戏物体一样在场景中移动,跟随等等

2.由于是被主摄象机拍摄,所以能够被近大远小体现出3D效果

3.使用需要我们调节画布的尺寸,使其与游戏物体的尺寸相对应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文心一言眼里的SQL世界

目录 一、Java基础教程系列二、先听听文心一言怎么说?三、话不多说,开干。1、要有一个正确的数据库学习路线,做一个细致的MySQL学习规划。2、学习资料推荐 四、MySQL基础知识总结五、MySQL进阶六、Redis和MongoDB需要学吗?七、如何…

代码随想录Day56

今天继续学习动规解决子序列问题。 674.最长连续递增子序列 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定&#xff0c;如果对于每个 …

GeoPandas 笔记:合并数据

很多地方和 pandas 笔记&#xff1a;合并操作_pandas 表格判断行空则合并行居中_UQI-LIUWJ的博客-CSDN博客是类似的 1 导入数据 import geopandas import pandas as pd world geopandas.read_file(geopandas.datasets.get_path(naturalearth_lowres)) world cities geopand…

《快速掌握PyQt5》专栏整理成书出版啦!

首先非常感谢大家对《快速掌握PyQt5》专栏的喜爱与支持&#xff01;该专栏现已整理成书出版&#xff0c;书名为《PyQt编程快速上手》。 本书内容在专栏内容的基础上进行了多方面的优化&#xff0c;内容更加丰富&#xff0c;知识点布局更加合理&#xff0c;代码和解释也更加简洁…

Zookeeper源码分析——ZK选举源码解析

ZK选举源码解析 Zookeeper选举机制——第一次启动 Zookeeper选举机制——非第一次启动 ZK选举源码解析 ZK选举准备源码解析 public synchronized void start() {if (!getView().containsKey(myid)) {throw new RuntimeException("My id " myid " not in the …

Camunda流程引擎 Modeler (二)

Camunda Modeler是Camunda官方提供的建模器&#xff1a; Modeler - 独立安装的建模器&#xff08;[windows、linux、mac] 一、下载camunda-modeler Download The Camunda BPMN / DMN Process Modeler | Camunda Release v5.10.0 camunda/camunda-modeler GitHubAn integrate…

深度强化学习【1】-强化学习入门必备基础(含Python迷宫游戏求解实例)

强化学习入门必备基础 文章目录 强化学习入门必备基础1. 强化学习与机器学习1.1 有监督学习1.2 半监督学习1.3 无监督学习1.4 强化学习1.5 深度学习 2. 强化学习中的一些概念2.1 智能体、动作、状态2.2 策略函数、奖励2.3 状态转移2.4 智能体与环境的交互过程2.5 折扣奖励2.6 动…

【Leetcode -21.合并两个有序链表 -83.删除排序链表中的重复元素】

Leetcode Leetcode-21.合并两个有序链表Leetcode-83.删除排序链表中的重复元素 Leetcode-21.合并两个有序链表 题目&#xff1a;将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 […

CUDA编程一天入门

目录 0 环境准备 1 套路 2 并行执行内核设置 3 示例代码simpleTexture3D 4 参考链接 0 环境准备 1 套路 CUDA 编程模型是一个异构模型&#xff0c;其中同时使用 CPU 和 GPU。在 CUDA 中&#xff0c;主机是指 CPU 及其内存&#xff0c;而设备是指 GPU 及其内存。在主机…

Prophet学习(三)饱和的预测与饱和最低

目录 饱和的预测&#xff08;Forecasting Growth&#xff09; 饱和最低&#xff08;Saturating Minimum&#xff09; 饱和的预测&#xff08;Forecasting Growth&#xff09; 默认情况下&#xff0c;Prophet使用线性模型进行预测。在预测增长时&#xff0c;通常有一个最大可达…

Ubuntu22.04lts NVIDIA驱动安装

1. NVIDIA驱动安装 1.1 手动安装 驱动下载地址&#xff1a;NVIDIA Driver Downloads 注意要在文本模式安装&#xff0c;进入文本模式的方法&#xff1a;sudo init 3。 返回图形化界面的方法sudo init 5 安装时报错&#xff1a; 安装NVIDIA驱动&#xff08;手动安装NVIDIA-L…

两种方式,轻松实现ChatGPT联网

两种方式效果&#xff1a; 方式一&#xff1a;浏览器搜索内嵌插件 方式二&#xff1a;官方聊天页内嵌插件 首先&#xff0c;要有一个谷歌浏览器&#xff0c;然后再安装一个叫ChatGPT for Google&#xff0c;直接在谷歌里搜一下就能找&#xff0c;也可以Chrome应用商店里搜索&a…

SAP批次主数据增强屏幕增强<转载>

原文链接&#xff1a;https://blog.csdn.net/hustliangchen/article/details/111163361 msc1n/msc2n/msc3n 批次增强 这几个事务码的主程序为SAPLCHRG&#xff0c;在如下图界面上有两块地方是可以做增强所预留的子屏幕&#xff0c;其中2是一个tab页签的子屏幕。注意版本较老的…

AI企划-《大明镇抚司到此一游》商业计划书

结合中国文化和当地资源打造的独特旅游产品 一、项目概述 本项目旨在利用中国文化特色&#xff0c;结合新西兰当地资源和市场需求&#xff0c;打造一款独特的旅游产品——“大明镇抚司到此一游”网红打卡点。该打卡点以大明镇抚司为主题&#xff0c;以大明小龙虾美食为特色&am…

千亿市场!低代码平台极大提升企业应用开发效率,颠覆传统模式!

背景 低代码平台的5个核心亮点&#xff1a; 可视化的表单设计&#xff1b; 2.可视化的审批流&#xff0c;逻辑流设计&#xff1b; 3.可视化的BI图标设计&#xff1b; 4.可视化的以应用为中心的开放和集成接口设计&#xff1b; 5.以应用为中心&#xff0c;依托于云原生技术的快…

线性表,栈和队列

什么是线性表&#xff1f; 线性表是由n个相同类型的数据元素组成的有限序列&#xff0c;它是最基本的一种线性结构。顾名思义&#xff0c;线性表就像是一条线&#xff0c;不会分叉。线性表有唯一的开始和结束&#xff0c;除了第一个元素外&#xff0c;每个元素都有唯一的直接前…

docker容器:docker资源管理

目录 一、docker资源控制 1、资源控制工具 2、设置CPU使用率上限 3、CPU压力测试 4、Cgroups限制cpu使用率 5、查看容器运行状态 6、 配置容器指定CPU 7、限制容器内存使用 8、对磁盘IO配额控制&#xff08;blkio&#xff09;的限制 二、docker数据管理 1、数据管理…

量子退火算法入门(7):如何QUBO中的三次多项式怎么转换?

文章目录 前言一、三次多项式的例题二、Python实现1.引入库 总结 前言 本文还是大部分截图来自于&#xff1a;《最適化問題とWildqatを用いた量子アニーリング計算入門》 https://booth.pm/ja/items/1415833 终于有人问到怎么将QUBO中的三次多项式转换为二次多项式了。直接以…

购物车--购物车模块完善

很明显&#xff0c;之前的购物车模块功能的实现不够完善&#xff0c;缺少一个删除购物车中产品的操作&#xff0c;针对此我们加一个删除功能。 1、写负责删除的servelt类 2、然后我们给购物车页面的jsp添加超链接传递目标id 搞定。

王道计组(23版)1_计算机系统概述

1.计算机发展历程 硬件的发展&#xff1a; 电子管、晶体管、中小规模集成电路、超大规模集成电路 摩尔定律&#xff1a; 价格不变时&#xff0c;每18个月&#xff0c;集成电路可容纳的晶体管数量和性能增加一倍 微型计算机的发展以微处理器技术为标志 计算机体系结构&#xf…