当前位置: 首页 > news >正文

unity学习51:所有UI的父物体:canvas画布

目录

1 下载资源

1.1 在window / Asset store下下载一套免费的UI资源

1.2 下载,导入import

1.3 导入后在 project / Asset下面可以看到

2 画布canvas,UI的父物体

2.1 创建canvas

2.1.1 画布的下面是 event system是UI相关的事件系统

2.2  canvas基础

2.2.1 切换到2D

2.2.2  使用矩形工具操作UI

2.3 canvas 的白色线框是什么?

2.3.1 canvas 的白色线框,就是game窗口的边界

​编辑

2.3.2 下面的UI实验

2.3.3 理解摄像机camera 前景框,就是UI的边界

2.4 创建一个测试的UI

3  canvas的属性

3.1 raycaster

3.2  sacler 缩放

3.2.1 UI的缩放

3.2.1 默认模式: constant pixel size 恒定像素大小

3.2.2 scale with screen size 随着屏幕大小缩放

3.2.3 constant physicl size  恒定物理大小

4 canvas / render mode 渲染模式

4.1 screen space -overlay   覆盖

4.2 screen space -camera  

4.2.1 现在这种情况下,canvas永远面向摄像机

4.2.2 物体遮挡UI

4.2.3 UI完全遮挡了物体

4.3 world space

5  sort order


1 下载资源

1.1 在window / Asset store下下载一套免费的UI资源

1.2 下载,导入import

1.3 导入后在 project / Asset下面可以看到

2 画布canvas,UI的父物体

  • UI最基础,最底层的就是画布 canvas
  • 可以认为是一张,画画基础的白纸
  • 也可以认为是最底层的容器吧
  • UI的所有内容都必须在canvas上
  • UI必须是其他UI内容的父物体

2.1 创建canvas

  • UI/ canvas

2.1.1 画布的下面是 event system是UI相关的事件系统

  • 创建CANVAS的同时
  • 会自动创建一个event system

2.2  canvas基础

  • canvas 就是一个白色的虚线框

2.2.1 切换到2D

2.2.2  使用矩形工具操作UI

2.3 canvas 的白色线框是什么?

2.3.1 canvas 的白色线框,就是game窗口的边界

  • canvas 的白色线框,就是game窗口的边界
  • game窗口不要黑色填充的那部分的边界

    2.3.2 下面的UI实验

    • 当 game 游戏窗口时 free aspect的情况下
    • 随便缩放game窗口,UI线框会跟着变化,变形

    • 当 game 游戏窗口时 free aspect的情况下
    • 随便缩放game窗口,UI线框会跟着变化,变大变小,而且可能变形

    • 当 game 游戏窗口时 16/9 aspect的情况下
    • 随便缩放game窗口,UI线框会跟着变化,变大变小,但是一直保持16/9 不变形

    2.3.3 总结:UI,完全跟着游戏game窗口的分辨率走,决定最终显示效果

    • game窗口的比例,会决定UI的比例

    2.3.4 理解摄像机camera 前景框,就是UI的边界

    • 摄像机camera,有一个大的锥形盒子
    • 摄像机camera 前景框,就是UI的边界
    • 后面都是景深内容
    • camera 前景框
    • 在UI的渲染模式:屏幕空间--摄像机的选择下,也就是UI

    2.4 创建一个测试的UI

    • 创建 canvas
    • 在canvas下,创建子物体 UI/image
    • 给image选择一个图片

    3  canvas的属性

    3.1 raycaster

    • 就是之前的 ray 检测。判断人在UI点击位置的

    3.2  sacler 缩放

    3.2.1 UI的缩放

    • UI的缩放是一个很重要的问题
    • 因为unity游戏世界 scene里的其他gameObject,都没有这个问题,只有UI有这个问题
    • 因为UI要求无论什么分辨率下,都显示相同的效果
    • 其他gameObject 都是随着分辨率,缩放的

    3.2.2 默认模式: constant pixel size 恒定像素大小

    • constant pixel size 恒定的像素
    • 默认的缩放模式:constant pixel size 按像素大小缩放
    • 我理解就是大分辨率下,恒定的像素就看起来小了

    下面2个图分别是这个模式下

    • 1920;1080
    • 16:9
    • 两种结果下不同的分辨率

    3.2.3 scale with screen size 随着屏幕大小缩放

    • scale with screen size  随着屏幕大小缩放
    • 保持某一种屏幕分辨率,无论屏幕怎么缩放,都坚持为这种分辨下的效果

    下面2个图分别是这个模式下

    • 1920;1080
    • 16:9
    • 两种结果下不同的分辨率
    • 图片固定为1920:1080了,game窗口变成16:9,UI效果完全不变

    3.2.4 constant physicl size  恒定物理大小

    • constant physicl size

    4 canvas / render mode 渲染模式

    • screen space -overlay      // ui 的内容,永远覆盖在摄像机内容的上面
    • screen space -camera    // UI也用camera来渲染,总是在camera的正面,且可能场景里更近的东西遮挡UI
    • world space  //也是camera来渲染。且UI 类gameObject 可以旋转,斜着,等等

    4.1 screen space -overlay   覆盖

    • ui 的内容,永远覆盖在摄像机内容的上面
    • 最常用模式
    • 不需要专门的摄像机
    • 内容直接覆盖在其他摄像机内容之上!!!就是这么霸道

    4.2 screen space -camera  

      // UI也用camera来渲染,总是在camera的正面,且可能场景里更近的东西遮挡UI

    • 选择这个模式
    • 需要给 关联一个camera

    4.2.1 现在这种情况下,canvas永远面向摄像机

    • 现在这种情况下,canvas永远面向摄像机
    • 否则UI不能被渲染

    4.2.2 物体遮挡UI

    4.2.3 UI完全遮挡了物体

    4.3 world space

    • 也是camera来渲染。
    • 也需要关联一个摄像机
    • 且UI 类gameObject 可以旋转,斜着,等等
    • 选择这个模式后,上面的旋转属性等不再灰色,可以编辑

    可以实现这种斜着的效果

    5  sort order

    • 如果有多个canvas
    • 这个order决定显示,覆盖的优先级

    相关文章:

    unity学习51:所有UI的父物体:canvas画布

    目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载,导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas,UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…...

    ctfshow做题笔记—栈溢出—pwn57~pwn60

    目录 前言 一、pwn57(先了解一下简单的64位shellcode吧) 二、pwn58 三、pwn59(64位 无限制) 四、pwn60(入门难度shellcode) 前言 往前写了几道题,与shellcode有关,关于shellc…...

    数据结构 1-2 线性表的链式存储-链表

    1 原理 顺序表的缺点: 插入和删除移动大量元素数组的大小不好控制占用一大段连续的存储空间,造成很多碎片 链表规避了上述顺序表缺点 逻辑上相邻的两个元素在物理位置上不相邻 头结点 L:头指针 头指针:链表中第一个结点的存储…...

    ArcGIS Pro进行坡度与坡向分析

    在地理信息系统中,坡度分析是一项至关重要的空间分析方法,旨在精确计算地表或地形的坡度,为地形特征识别、土地资源规划、环境保护、灾害预警等领域提供科学依据。本文将详细介绍如何利用ArcGIS Pro这一强大的地理信息系统软件,进…...

    My first Android application

    界面元素组成&#xff1a; 功能代码&#xff1a; /*实现功能&#xff1a;当输入内容后&#xff0c;欢迎文本发生相应改变&#xff0c;并清除掉文本域内容当未输入任何内容时&#xff0c;弹出提示文本以警告用户*/val greetingText findViewById<TextView>(R.id.printer)…...

    ZLMediaKi集群设置

    要在集群环境中部署 ZLMediaKit&#xff0c;您可以按照以下步骤进行操作。ZLMediaKit 是一个高性能的流媒体服务器&#xff0c;支持 RTMP、RTSP、HLS 等协议。以下是一个详细的集群部署方案&#xff1a; ### 1. 环境准备 - **服务器**&#xff1a;准备多台服务器&#xff0c;…...

    Docker基础实践与应用举例

    Docker 是一个轻量级容器化平台&#xff0c;通过将应用及其依赖打包到容器中&#xff0c;实现快速部署和环境一致性。以下是 Docker 的实践与应用场景举例&#xff0c;结合具体操作步骤&#xff1a; 一、基础实践 1. 快速启动一个容器 # 运行一个Nginx容器&#xff0c;映射宿…...

    Innovus中快速获取timing path逻辑深度的golden脚本

    在实际项目中我们经常会遇到一条timing path级数特别多&#xff0c;可能是一两页都翻不完。此时&#xff0c;我们大都需要手工去数这条path上到底有哪些是设计本身的逻辑&#xff0c;哪些是PR工具插入的buffer和inverter。 数字IC后端手把手培训教程 | Clock Gating相关clock …...

    百度AI图片助手,免费AI去水印、画质修复、画面延展以及局部替换

    最近&#xff0c;要是你常用百度图片&#xff0c;可能已经发现了它新添的一个超实用功能——百度AI图片助手。但很多朋友不知道它的入口地址&#xff0c;我们今天给大家分享一下。 这个功能的出现&#xff0c;在图片编辑修改方面带来了极大便利&#xff0c;它涵盖了AI去水印、…...

    【前端】Axios AJAX Fetch

    不定期更新&#xff0c;建议关注收藏点赞。 目录 AxiosAJAXCORS 允许跨域请求 Fetch Axios axios 是一个基于 Promise 的 JavaScript HTTP 客户端&#xff0c;用于浏览器和 Node.js 中发送 HTTP 请求。它提供了一个简单的 API 来发起请求&#xff0c;并处理请求的结果。axios …...

    测试面试题:以一个登录窗口为例,设计一下登录界面测试的思路和方法

    在测试登录窗口时,可以从 表单测试、 逻辑判断和 业务流程三个方面设计测试思路和方法。以下是一个详细的测试方案: 1. 表单测试 表单测试主要关注输入框、按钮等UI元素的正确性和用户体验。 测试点: 输入框测试 用户名和密码输入框是否正常显示。输入框是否支持预期的字符类…...

    Android之图片保存相册及分享图片

    文章目录 前言一、效果图二、实现步骤1.引入依赖库2.二维码生成3.布局转图片保存或者分享 总结 前言 其实现在很多分享都是我们自定义的&#xff0c;更多的是在界面加了很多东西&#xff0c;然后把整个界面转成图片保存相册和分享&#xff0c;而且现在分享都不需要第三方&…...

    EX_25/2/24

    写一个三角形类&#xff0c;拥有私有成员 a,b,c 三条边 写好构造函数初始化 abc 以及 abc 的set get 接口 再写一个等腰三角形类&#xff0c;继承自三角形类 1&#xff1a;写好构造函数&#xff0c;初始化三条边 2&#xff1a;要求无论如何&#xff0c;等腰三角形类对象&#x…...

    ElasticSearch公共方法封装

    业务场景 1、RestClientBuilder初始化&#xff08;同时支持单机与集群&#xff09; 2、发送ES查询请求公共方法封装&#xff08;支持sql、kql、代理访问、集群访问、鉴权支持&#xff09; 3、判断ES索引是否存在&#xff08;/_cat/indices/${indexName}&#xff09; 4、判断ES…...

    JVM之JVM的组成

    Java 虚拟机&#xff08;JVM&#xff09;是 Java 程序的运行核心&#xff0c;它主要由类加载系统、运行时数据区、执行引擎和本地方法接口这几个关键部分组成。 类加载系统&#xff08;Class Loading System&#xff09; 类加载系统负责在程序运行时动态地将 Java 类加载到 J…...

    贪心算法

    int a[1000], b5, c8; swap(b, c); // 交换操作 memset(a, 0, sizeof(a)); // 初始化为0或-1 引导问题 为一个小老鼠准备了M磅的猫粮&#xff0c;准备去和看守仓库的猫做交易&#xff0c;因为仓库里有小老鼠喜欢吃的五香豆&#xff0c;第i个房间有J[i] 磅的五香豆&#xf…...

    Linux下安装中文输入法总结

    Linux下安装中文输入法总结_linux 微软拼音-CSDN博客文章浏览阅读4.2w次&#xff0c;点赞21次&#xff0c;收藏92次。众所周知&#xff0c;fcitx和ibus是两款很好用的Linux中文输入法框架。下面来说一下其安装方法以及会踩的坑。首先fcitx和ibus是不能共存的&#xff0c;两者只…...

    人工智能(AI):科技新纪元的领航者

    摘要 人工智能&#xff08;AI&#xff09;作为当今科技领域最具变革性的力量之一&#xff0c;正以惊人的速度重塑着我们的世界。本文旨在全面且专业地介绍人工智能&#xff0c;涵盖其定义、发展历程、关键技术、应用领域、面临的挑战以及未来展望等方面&#xff0c;以期为读者…...

    c3p0、Druid连接池+工具类 Apache-DbUtils (详解!!!)

    数据库连接池是在应用程序启动时创建一定数量的数据库连接&#xff0c;并将这些连接存储在池中。当应用程序需要与数据库通信时&#xff0c;它可以向池中请求一个连接&#xff0c;使用完后将连接归还给池&#xff0c;而不是关闭连接。这样可以减少创建和关闭连接的开销&#xf…...

    鸿蒙开发深入浅出03(封装通用LazyForEach实现懒加载)

    鸿蒙开发深入浅出03&#xff08;封装通用LazyForEach实现懒加载&#xff09; 1、效果展示2、ets/models/BasicDataSource.ets3、ets/models/HomeData.ets4、ets/api/home.ets5、ets/pages/Home.ets6、ets/views/Home/SwiperLayout.ets7、后端代码 1、效果展示 2、ets/models/Ba…...

    C++初阶-list的底层

    目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

    RocketMQ延迟消息机制

    两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

    【OSG学习笔记】Day 18: 碰撞检测与物理交互

    物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

    突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

    强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

    React Native 开发环境搭建(全平台详解)

    React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

    模型参数、模型存储精度、参数与显存

    模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

    QMC5883L的驱动

    简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

    转转集团旗下首家二手多品类循环仓店“超级转转”开业

    6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

    MVC 数据库

    MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

    质量体系的重要

    质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...