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 ModuleeventSystem.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

六大基础组件概述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解PID(零)——什么是PID

PID控制器是一种广泛用于各种工业控制场合的控制器&#xff0c;它结构简单&#xff0c;可以根据工程经验整定参数Kp,Ki,Kd. 虽然现在控制专家提出了很多智能的控制算法&#xff0c;比如神经网络&#xff0c;模糊控制等&#xff0c;但是PID仍然被广泛使用。常见的PID控制器有位置…

开源全文搜索(搜索引擎)

吃水不忘挖井人&#xff0c;介绍Doug Cutting大牛是十分有必要的。 最早&#xff0c;接触到搜索引擎&#xff0c;知道有个Nutch&#xff08;开源搜索引擎&#xff09;&#xff0c;于是开始查看Nutch相关的资料&#xff0c;发现了Nutch的创始人Doug Cutting&#xff0c;随着项目…

初创公司首选HR软件推荐与功能解析

初创企业需HR软件自动化招聘、文书、日常任务及合规管理&#xff0c;提升效率。ZohoPeople是理想选择&#xff0c;性价比高&#xff0c;版本多样&#xff0c;满足不同需求。 1、简化招聘流程 您一直在寻找杰出的人才&#xff0c;以助您的初创企业飞跃发展。您选择的HR软件应该…

Python数字图像处理实战——基于OpenCV实现多种滤波器(附完整代码和结果图)

Python数字图像处理实战——基于OpenCV实现多种滤波器&#xff08;附完整代码和结果图&#xff09; 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0c;目标检测…

极客兔兔Gee-Cache Day7

protobuf配置&#xff1a; 从 Protobuf Releases 下载最先版本的发布包安装。解压后将解压路径下的 bin 目录 加入到环境变量即可。 如果能正常显示版本&#xff0c;则表示安装成功。 $ protoc --version libprotoc 3.11.2在Golang中使用protobuf&#xff0c;还需要protoc-g…

LSTM时间序列模型实战——预测上证指数走势

LSTM时间序列模型实战——预测上证指数走势 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0c;目标检测&#xff0c;图像分类&#xff0c;姿态识别&#xff0c;…

影刀RPA实战:Excel排序、替换与格式

1.实战目标 今天继续介绍影刀RPA操作Excel的指令&#xff0c;内容替换&#xff0c;数据排序与单元格格式设置&#xff0c;这几个功能在日常工作中使用率还是比较频繁的。我们可以使用影刀来处理这些重复繁琐的工作。 2.内容替换 我们手动替换内容时 打开Excel文件&#xff1…

鸿蒙进入“无人区”:该如何闯关?

按照华为方面的说法&#xff0c;“打造鸿蒙操作系统是三大战役&#xff0c;目前已经完成了底座和体验两大战役&#xff0c;第三大战役则是生态。”生态固然重要&#xff0c;但要让鸿蒙与当今世界主流操作系统抗衡&#xff0c;乃至成为新一代操作系统中的翘楚&#xff0c;其实还…

上市四天暴涨又暴跌,扫描全能王背后公司坐上“过山车”

股价四天涨五倍&#xff0c;遇到回调跌一半&#xff0c;扫描全能王母公司——合合信息&#xff0c;一上市就坐上了“过山车”。 合合信息其实早在2021年就向科创板申请上市&#xff0c;并在2023年成功过会&#xff0c;但直到9月13日才开启申购&#xff0c;IPO之路一走就是三年…

springboot-网站开发-thymeleaf引擎报错找不到指定的页面模板文件

springboot-网站开发-thymeleaf引擎报错找不到指定的页面模板文件&#xff01; 这种错误的情况&#xff0c;发生&#xff0c;一般都是因为&#xff0c;我们自己的html模板文件&#xff0c;存档位置并不是在默认的templates下面。而是我们自己新建的一个子目录里面。然后&#x…

又被Transformer秀到了!结合小样本学习发A会!

在有限的数据资源下&#xff0c;为了训练出高性能的机器学习模型&#xff0c;我们常会考虑Transformer小样本学习。 这是因为Transformer能从有限的数据中提取更多有用的信息&#xff0c;这样与小样本学习结合&#xff0c;可以更有效的帮助我们提高模型的性能&#xff0c;加速…

Vue84 vue3项目结构分析

打开main.js文件&#xff0c;发现和vue2不同 //引入的不再是Vue构造函数了&#xff0c;引入的是一个名为createApp的工厂函数 import { createApp } from vue import App from ./App.vue//创建应用实例对象——app(类似于之前Vue2中的vm&#xff0c;但app比vm更“轻”) const …

Chrome(谷歌)浏览器 数据JSON格式美化 2024显示插件安装和使用

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 没有美化的格式浏览器展示 美化之后效果图 安装流程 下载地址 https://github.com/gildas-lormeau/JSONVue 点击下载 下载成功&#xff0c;如图所示 解压文件 添加成功&#xff0c;如图所示 通过浏览器…

Python测试框架--Allure

严格意义上讲 Allure 不算是测试框架&#xff0c;但是它是生成漂亮测试报告的开源工具&#xff0c;搭配 Pytest 测试框架食用更搭。 也就是说 Allure 是在 Pytest 执行完生成的测试数据的基础上&#xff0c;对测试数据进行处理统计&#xff0c;生成格式统一、美观的测试报告。 …

C语言函数栈帧的创建与销毁(32)

文章目录 前言一、什么是函数栈帧&#xff1f;二、理解函数栈帧能解决什么问题&#xff1f;三、函数栈帧的创建和销毁解析什么是栈&#xff1f;认识相关寄存器和汇编指令 四、解析函数栈帧的创建和销毁预备知识函数的调用堆栈准备环境转到反汇编函数栈帧的创建函数栈帧的销毁 五…

FreeRTOS学习总结

背景&#xff1a;在裸机开发上&#xff0c;有时候我们需要等待某个信号或者需要延迟时&#xff0c;CPU的运算是白白浪费掉了的&#xff0c;CPU的利用率并不高&#xff0c;我们希望当一个函数在等待的时候&#xff0c;可以去执行其他内容&#xff0c;提高CPU的效率&#xff0c;同…

视频格式不支持播放怎么办?几招教你转换成mp4格式

视频已成为我们生活中不可或缺的一部分&#xff0c;无论是学习、娱乐还是工作交流&#xff0c;视频都扮演着重要角色。然而&#xff0c;在享受视频带来的便利时&#xff0c;我们时常会遇到一个令人头疼的问题——视频格式不支持播放。不同设备、平台和软件对视频格式的支持各不…

什么是组态软件?Web组态软件又是什么?

从事相关工作的对“组态软件”应该都不陌生&#xff0c;那Web组态软件又是什么呢?本文将对Web组态可视化软件&#xff08;下称“Web组态软件”&#xff09;做简单介绍&#xff0c;可视化编辑器是Web组态软件中的一个重要功能模块。除了编辑器&#xff0c;还有哪些功能模块?又…

leetcode---素数,最小质因子,最大公约数

1 判断一个数是不是质数(素数) 方法1&#xff1a;依次判断能否被n整除即可&#xff0c;能够整除则不是质数&#xff0c;否则是质数 方法2&#xff1a;假如n是合数&#xff0c;必然存在非1的两个约数p1和p2&#xff0c;其中p1<sqrt(n)&#xff0c;p2>sqrt(n)。 方法3&…

医院管理新思维:Spring Boot技术应用

5系统详细实现 5.1 医生模块的实现 5.1.1 病床信息管理 医院管理系统的医生可以管理病床信息&#xff0c;可以对病床信息添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 病床信息管理界面 5.1.2 药房信息管理 医生可以对药房信息进行添加&#xff0c;修改&#xff0c;…