UGUI(六大UI根基组件)

Rect Transform

各种参数

是显示pos还是width/height

还是left/top/right/bottom之类巴拉巴拉,各种混合的展示baby,都是看anchor的设置

pivot的设置影响具体数值 

至于blueprint mode ,就是用了之后框框不变,who wanna do this my Jesus?

raw edit mode,原始编辑,改pivot和锚点不会改变矩形pos的值,可以让位置的调整更优雅

pivot 和anchor都是可以直接在窗口里拖动调整的,calm down baby

不同于一般的transform,Rect Transform左边的靶子可以很方便

 关于代码

因为继承了transform

 

shift和alt有奇效

shift把自己pivot也跟着anchor去move his body

alt则是把自己的位置凑到锚点矛的地方去 

Standalone Input Module

依赖于Event System

Horizontal Axis / Vertical Axis

这两个属性简单来说:

  • Horizontal Axis:定义了哪些键用来控制左右移动(例如在菜单选项之间左右切换)。
  • Vertical Axis:定义了哪些键用来控制上下移动(例如在垂直排列的菜单项之间上下切换)。

这些“轴”(Axis)绑定到输入系统中预设的名称。Unity 的默认设置是

  • Horizontal 绑定到左箭头和右箭头、或者 AD 键。
  • Vertical 绑定到上箭头和下箭头、或者 WS 键。

Submit Button/ Cancel Button

同样的,这两个属性定义了你在 UI 中确认取消操作时使用的键。

Unity默认情况下,

Submit 通常绑定到 Enter 键或 Space 键。

Cancel 绑定到 Esc 键。

using UnityEngine;
using UnityEngine.EventSystems;

public class Example : MonoBehaviour
{
    void Start()
    {
        // 创建一个新的 EventSystem 对象
        GameObject eventSystem = new GameObject("EventSystem");
        eventSystem.AddComponent<EventSystem>();

        // 添加 Standalone Input Module
        eventSystem.AddComponent<StandaloneInputModule>();
    }
}

 定义这些是否画蛇添足?

自己一样可以检测哪些键按下,的确,但是这样更统一,可以 省去一些设备差异造成的麻烦

Unity 的输入系统:

自动处理不同平台上的输入方式(比如键盘、游戏手柄、触摸设备等)。当你使用 Horizontal AxisVertical Axis 时,Unity 的系统会自动将这些抽象的方向输入映射到合适的按键或控制器(例如游戏手柄上的左摇杆)。

自动处理 UI 元素的焦点导航。你只需要指定哪些按键控制水平/垂直移动,Unity 就会帮你处理焦点在按钮或其他 UI 元素之间的切换,而不必自己写代码去检测并更新焦点。

通过使用预定义的 HorizontalVertical 轴,你可以在项目中保持一致的输入方式,避免自己手动处理方向键的检测逻辑。这使得代码更加简洁,且易于维护。你不必自己手动定义按键行为,只需配置输入系统即可。

Event System

Graphic Raycaster

blocking object 默认下为none,也就是说ui就是完全独立于整个世界的,里面的无论是什么物体,就算有碰撞器,也不会挡住ui 的交互,

plus,有3d碰撞器,也有2d碰撞器

mask则是层级的二次精确设置哪些层的物体的碰撞器可以有影响

Screen Space - Overlay:此模式下,Canvas 会直接渲染在屏幕上方,并且与相机无关。它独立于场景中的任何3D对象,相当于“覆盖”在屏幕上的一种全屏UI显示方式。所以碰撞器无视。raycaster的block也和overlay无关

Screen Space - Camera:Canvas 会跟随指定的相机进行渲染,UI元素会被放置在相机的渲染层上,因此与场景中的相机视角相关联。碰撞器相比overlay更可控。

Canvas Scaler

canvas为world space时出现的3d模式

constant physical size

canvas scaler 设置的是父对象canvas的缩放和大小

reference pixels per unit 

 Scale Factor

canvas的rect transform是默认不可改的,这里的Scale可以通过更改大小,然后因为公式

像素长度*缩放因子=屏幕(物理)像素长度

三种scale mode

constant physical size和constant pixel size 基本上一样,只是添加了一些新的算法

分辨率自适应,不管控ui的位置,管控Canvas

不同电脑有不同的像素点个数,ui在不同的分辨率下展现出相同的效果,自适应

rect长度*缩放系数=屏幕分辨率长度

分辨率自适应,是一种通过算法,算出可以在不同电脑分辨率下,展现出相同UI位置效果的缩放比例,然后自动修改 

对于3d物体 

对于正常的3D物体(非UI元素),它们的显示与 Camera 的投影设置相关,而不是与Canvas的UI机制相关。

正交投影(Orthographic Projection):物体的尺寸和分辨率无关,它们会在屏幕上按实际世界单位显示。在不同的分辨率下,虽然物体的物理尺寸不会变化,但因为(活生生的手机)屏幕空间的像素密度不同,可能会导致物体看起来“大小不一致”,但实际上它们的(虚假的网络)世界单位是固定的。

透视投影(Perspective Projection):正常3D渲染中常用的方式。物体的显示受摄像机的视角和投影矩阵的影响,物体远近会显得大小不同。分辨率变化可能会影响画面清晰度渲染细节,但物体的实际渲染位置和大小是依赖于Camera的投影规则,而不是分辨率本身。

分辨率对3D物体显示的影响

这里可能会让你感到困惑的是,虽然UI有分辨率自适应的明确规则,但3D物体的显示也会受到分辨率的一些间接影响。比如:

  • 屏幕的Aspect Ratio(宽高比):如果设备分辨率的宽高比发生变化,而Camera的设置(如 Field of View)没有相应调整,那么3D场景中的物体可能会显得被拉伸或压缩,因为摄像机的视野变了。尤其是在使用透视投影时,这种变化更加明显。

  • Viewport 和 Clipping:摄像机的视口(Viewport)和裁剪(Clipping)也会受到分辨率的影响,可能导致部分物体在不同的分辨率下显示与预期不一致。这是因为摄像机在不同的屏幕比例下看到的场景区域会发生变化。

  • 固定像素大小的材质或对象:如果你有一些纹理或材质的分辨率是固定的,而显示设备的分辨率提高,可能会导致这些材质看起来模糊,因为它们没有足够的像素细节来匹配更高分辨率的屏幕。

分辨率自适应和UI与物体的关系

  • 对于UI元素,分辨率自适应主要依赖于Canvas和Canvas Scaler的设置。无论设备分辨率如何,UI都会通过缩放来确保一致的用户体验。

  • 对于3D物体,分辨率并不会直接改变物体的世界单位或大小,但屏幕宽高比摄像机的投影设置会影响物体在屏幕上的显示效果。所以,虽然3D物体本质上和Canvas的分辨率自适应机制不同,但在高分辨率设备上,3D物体的显示可能看起来不同,主要原因是视角和像素密度的不同,而不是物体的实际大小或位置发生变化。

Canvas

world space

一般关联主摄像机

摄像机模式

不拖上摄像机默认为overlay

不推荐为主摄像机,plane distance是物理上的ui距离

摄像机模式一般新建一个摄像机来操纵ui层的显示

layer是canvas之间控制显示的先后顺序倒带,order in layer则是layer相同的情况下,更进一步的比较

可以多个canvas,一般一个就够了

render mode

六大基础组件概述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从WIFI到NB-IoT,探秘智能门锁的高科技接入方式

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello大家好!我是小米,一个29岁、活力满满、热爱分享技术的小米!今天,我想和大家聊聊一个与智能家居密切相关的技术话题——智能门锁的接入方式。无…

哪个编程工具让你的工作效率翻倍?

文章目录 哪个编程工具让你的工作效率翻倍&#xff1f;1. 编辑器与 IDE&#xff1a;高效编码的基础1.1 Visual Studio Code提升效率的关键功能&#xff1a; 1.2 JetBrains 系列 IDE提升效率的关键功能&#xff1a; 1.3 Vim提升效率的关键功能&#xff1a; 2. 版本控制工具&…

使用Java调用OpenAI API并解析响应:详细教程

使用Java调用OpenAI API并解析响应&#xff1a;详细教程 在现代应用程序中&#xff0c;API调用是一个非常常见的任务。本文将通过一个完整的示例&#xff0c;讲解如何使用Java调用OpenAI的ChatGPT API&#xff0c;并通过ObjectMapper处理JSON响应。本文的示例不仅适用于OpenAI…

习题5 循环

选择题 1、如下程序的运行结果为 【 正确答案: B】。 A.9 B.8 C.7 D.6 2、C语言的for语句中的表达式可以部分或全部省略&#xff0c;但两个 【 正确答案: C】不能省略。 但当三个表达式均省略后&#xff0c;因缺少判断条件&#xff0…

翔云 OCR:发票识别与验真

在数字化时代&#xff0c;高效处理大量文档和数据成为企业和个人的迫切需求。翔云 OCR 作为一款强大的光学字符识别工具&#xff0c;在发票识别及验真方面表现出色&#xff0c;为我们带来了极大的便利。 一、翔云 OCR 简介 翔云 OCR 是一款基于先进的人工智能技术开发的文字识别…

第十一章 缓存之更新/穿透/雪崩/击穿

目录 一、什么是缓存 二、缓存更新策略 2.1. 缓存主动更新策略 2.1.1. Cache Aside模式&#xff08;主流&#xff09;‌ 2.1.2. Read/Write Through模式‌ 2.1‌.3. Write Behind模式‌ 2.1.4. 总结 三、缓存穿透 四、缓存雪崩 五、缓存击穿 5.1. 互斥锁实现 5.1.1…

【从0开始搭建微服务并进行部署】SpringBoot+dubbo+zookeeper

文章目录 说明环境搭建创建项目父模块设置子模块 dubbo-api子模块 dubbo-provider子模块 dubbo-consumer测试项目 docker部署项目完整项目地址 说明 jdk1.8SpringBoot2.x低版本dubbo&#xff1a;请查看之前教程【微服务】SpringBootDubboZooKeeper 实战 关于本教程将采用jdk1…

Windows应急响应-Auto病毒

文章目录 应急背景分析样本开启监控感染病毒查看监控分析病毒行为1.autorun.inf分析2.异常连接3.进程排查4.启动项排查 查杀1.先删掉autorun.inf文件2.使用xuetr杀掉进程3.启动项删除重启排查入侵排查正常流程 应急背景 运维人员准备通过windows共享文档方式为公司员工下发软件…

新版IDEA中Git的使用(四)——解决冲突

说明&#xff1a;之前介绍过新版IDEA中Git的基础操作、分支操作和回滚代码&#xff0c;本文介绍基于新版IDEA&#xff0c;如何解决代码冲突。 避免冲突 解决冲突的最好方法就是不要发生冲突&#xff0c;这里我介绍下面几点&#xff0c;可以避免代码冲突&#xff1b; 时常做pu…

C语言:预编译过程的剖析

目录 一.预定义符号和#define定义常量 二.#define定义宏 三.宏和函数的对比 四、#和##运算符 五、条件编译 在之前&#xff0c;我们已经介绍了.c文件在运行的过程图解&#xff0c;大的方面要经过两个方面。 一、翻译环境 1.预处理&#xff08;预编译&#xff09; 2.编译 3…

广联达 Linkworks办公OA Service.asmx接口存在信息泄露漏洞

漏洞描述 广联达科技股份有限公司以建设工程领域专业应用为核心基础支撑&#xff0c;提供一百余款基于“端云大数据”产品/服务&#xff0c;提供产业大数据、产业新金融等增值服务的数字建筑平台服务商。广联达OA存在信息泄露漏洞&#xff0c;由于某些接口没有鉴权&#xff0c…

干货:京东云GPU服务器性能NVIDIA A30/A10/V100/P40测评

京东云GPU服务器性能如何&#xff1f;京东云GPU云主机提供NVIDIA A30、A10、V100、P40等多款GPU卡&#xff0c;新推出的8卡A30规格&#xff0c;配备24G显存&#xff0c;支持NVLink&#xff0c;更好为深度学习的推理与训练、高性能计算应用提供GPU算力&#xff0c;京东云服务器网…

新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。

今天给大家介绍一种自动化生成时尚图像数据的方法Prompt2Fashion。 首先创建了一组描述&#xff0c;比如“适合婚礼的休闲风格服装”&#xff0c;然后用这些描述来指导计算机生成图像。具体来说&#xff0c;他们使用了大型语言模型来写出这些服装的描述&#xff0c;接着将这些描…

JavaSE——面向对象10:抽象类、接口

目录 一、抽象类 (一)抽象类的引出 (二)抽象类基本介绍 (三)注意事项和使用细节 (四)抽象类的最佳实践——模板设计模式 二、接口 (一)接口快速入门 (二)基本介绍 (三)注意事项与使用细节 (四)接口VS继承 (五)接口的多态性 1.多态参数 2.多态数组 3.接口存在多态…

文件上传之%00截断(00截断)以及pikachu靶场

pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断&#xff0c; 第13关0x00截断 差不多了&#xff0c;今天先学文件上传白名单&#xff0c;在网上看了资料&#xff0c;差不多看懂了&#xff0c;但是还有几个地方需要实验一下&#…

高性能架构—存储高性能

1 &#x1f4ca;关系型数据库 存储技术飞速发展&#xff0c;关系型数据的ACID特性以及强大的SQL查询让其成为各种业务系统的关键和核心存储系统。 很多场景下的高性能设计最核心的就是关系型数据库的设计&#xff0c;很多数据库厂商再优化和提升单个数据库服务器的性能方面做了…

统一 SASE 架构中的网络和安全融合

网络威胁情报技术的进步 传统的网络边界一片混乱&#xff0c;剩下的只是无人管理的设备、分散在私有云和公共云中的资产、无法读取的应用程序流量泛滥&#xff0c;混合工作结构正在给现有网络的功能带来压力。 更重要的是&#xff0c;这些问题早在生成式人工智能和大型语言模…

【C++11】新特性

前言&#xff1a; C11 是C编程语言的一个重要版本&#xff0c;于2011年发布。它带来了数量可观的变化&#xff0c;包含约 140 个新特性&#xff0c;以及对 C03 标准中约600个缺陷的修正&#xff0c;更像是从 C98/03 中孕育出的新语言 列表初始化 C11 中的列表初始化&#xff0…

智能手表(Smart Watch)项目

文章目录 前言一、智能手表&#xff08;Smart Watch&#xff09;简介二、系统组成三、软件框架四、IAP_F411 App4.1 MDK工程结构4.2 设计思路 五、Smart Watch App5.1 MDK工程结构5.2 片上外设5.3 板载驱动BSP5.4 硬件访问机制-HWDataAccess5.4.1 LVGL仿真和MDK工程的互相移植5…