UGUI(六大UI根基组件)

news2024/10/6 23:16:13

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

六大基础组件概述

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

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

相关文章

Graph Retrieval-Augmented Generation: A Survey

最近&#xff0c;检索增强生成(RAG)在解决大型语言模型(llm)的挑战方面取得了显著的成功&#xff0c;而无需再培训。通过引用外部知识库&#xff0c;RAG改进了LLM输出&#xff0c;有效地减轻了诸如“幻觉”、缺乏特定于领域的知识和过时信息等问题。然而&#xff0c;数据库中不…

数据结构与算法篇(图)(持续更新迭代)

目录 一、引言 二、基本概念 三、图的定义 四、图的基本概念和术语 1. 有向图 2. 无向图 3. 简单图 4. 多重图 5. 完全图&#xff08;也称简单完全图&#xff09; 6. 子图 7. 连通、连通图和连通分量 8. 强连通图、强连通分量 9. 生成树、生成森林 10. 顶点的度、…

通信工程学习:什么是OSPF开放式最短路径优先

OSPF&#xff1a;开放式最短路径优先 OSPF&#xff08;Open Shortest Path First&#xff0c;开放式最短路径优先&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;被广泛应用于计算机网络中&#xff0c;特别是在构建大型和复杂的网络时。以下是对OSPF的…

【Linux】进程第三弹(虚拟地址空间)

目录 现象 底层原因 数据不发生修改 数据修改 小总结 地址空间本质 为什么要有地址空间 现象 来看代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/types.h>int val 50;int main() {printf("father process is running…

Kotlin真·全平台——Kotlin Compose Multiplatform Mobile(kotlin跨平台方案、KMP、KMM)

前言 随着kotlin代码跨平台方案的推出&#xff0c;kotlin跨平台一度引起不少波澜。但波澜终归没有掀起太大的风浪&#xff0c;作为一个敏捷型开发的公司&#xff0c;依然少不了Android和iOS的同步开发&#xff0c;实际成本和效益并没有太多变化。所以对于大多数公司来说依然风平…

【数据结构】【链表代码】移除链表元素

移除链表元素 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* removeElements(struct ListNode* head, int val) { // 创建一个虚拟头节点&#xff0c;以处理头节点可能被删除的情况 struct…

ROS/Gazebo/Nav2/MoveIt Pro/RMF学习笔记24-10-06

ROS ROS&#xff08;Robot Operating System&#xff09;系统&#xff0c;尽管严格意义上来说并非一个操作系统&#xff0c;而是一个专为机器人软件开发的开源软件框架集合&#xff0c;它在机器人技术领域中扮演着至关重要的角色。ROS系统的新应用和特性主要体现在以下几个方面…

【Linux】Shell脚本基础+条件判断与循环控制

目录 一、介绍 1. Linux提供的Shell解析器 2. bash和sh关系 3. Centos默认的Shell解析器是bash 二、定义 1. 变量名的定义规则 2. 等号周围没有空格 3. 查看变量 4. 删除变量 5. 正确地定义数组 6. 将局部环境变量提升为全局 7. 正确选择引号 8. 特殊变量名 三…

MES系统与其他系统的集成

一、MES与ERP的集成 1. 实时数据共享 万界星空科技MES系统可以与企业资源计划&#xff08;ERP&#xff09;系统集成&#xff0c;实现双向数据传输。通过实时数据共享&#xff0c;ERP系统能够更准确地进行物料需求计划&#xff0c;并及时更新生产进度和库存信息。 2. 工单管理…

LeetCode讲解篇之322. 零钱兑换

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们可以使用动态规划解决这道题&#xff0c;我们首先定义一个数组&#xff0c;数组中第i个元素表示组成金额 i 的最少硬币个数 我们遍历数组的1 ~ amount号位置&#xff0c;对coins进行遍历&#xff0c;查找选…

短剧小程序短剧APP在线追剧APP网剧推广分销微短剧小剧场小程序集师知识付费集师短剧小程序集师小剧场小程序集师在线追剧小程序源码

一、产品简介功能介绍 集师专属搭建您的独有短剧/追剧/小剧场小程序或APP平台 二、短剧软件私域运营解决方案 针对短剧类小程序的运营&#xff0c;以下提出10条具体的方案&#xff1a; 明确定位与目标用户&#xff1a; 对短剧类小程序进行明确定位&#xff0c;了解目标用户群体…

【最新华为OD机试E卷-支持在线评测】计算三叉搜索树的高度(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

社会工程学:社工无处不在

目录 社会工程学 社工利用了人的弱点 社会工程学攻击的流程通常可以分为以下几个步骤 以下是一些常见的方式&#xff0c;攻击者可以利用这些方式来收集个人信息 一些常见的攻击方式 钓鱼邮件 宏病毒 网站克隆 防范 社会工程学 介绍&#xff1a; 社会工程学是一种攻击技…

S7-200 SMART 与调试助手之间 Modbus RTU 通信

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站/从站协议库&#xff0c;Modbus RTU 指令位于 STEP7-Micro/WIN SMART 项目树中“指令”文件夹的“库”文件夹中。如图1.Modbus RTU库指令所示。 图1.Modbus RTU库指令 注意&#xff1a; 1. Modbus RTU 主站指令库的…

nginx 负载均衡1

遇到的问题 大型网站都要面对庞大的用户量&#xff0c;高并发&#xff0c;海量数据等挑战。为了提升系统整体的性能&#xff0c;可以采用垂直扩展和水平扩展两种方式。 垂直扩展&#xff1a;在网站发展早期&#xff0c;可以从单机的角度通过增加硬件处理能力&#xff0c;比如 C…

【Redis】持久化(上)---RDB

文章目录 持久化的概念RDB手动触发自动触发bgsave命令的运行流程RDB文件的处理RDB的优缺点RDB效果展示 持久化的概念 Redis支持AOF和RDB两种持久化机制,持久化功能能有效的避免因进程退出而导致的数据丢失的问题,当下次重启的时候利用之前持久化的文件即可实现数据恢复. 所以此…

Alignment与Correspondence,用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法

Alignment与Correspondence&#xff0c;用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法 FesianXu 20241006 at Wechat Search Team 前言 在多模态大模型&#xff08;Multimodal Large Language Model&#xff0c; MLLM&#xff09;中&#xff0c;视觉特征就像…

MySQL 篇-深入了解存储引擎、索引(InnoDB 索引结构 B+Tree、索引使用规则)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 存储引擎概述 1.1 存储引擎 - InnoDB 1.2 存储引擎 - MyISAM 1.3 存储引擎 - Memory 1.4 存储引擎 - 选择 2.0 索引概述 2.1 索引结构 2.1.1 索引结构 - B-Tree 2…

Docker:安装 MongoDB 的详细指南

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;可以在 Docker 容器中轻松安装和运行。本文将介绍如何在 Docker 中安装 MongoDB&#xff0c;并展示如何在 Java 应用中使用 MongoDB…

MySQL事务日志—redo日志介绍

MySQL事务日志—redo日志 事务有4种特性&#xff1a; 原子性、一致性、隔离性和持久性。 那么事务的四种特性到底是基于什么机制实现? 事务的原子性、一致性由事务的 undo 日志事务的隔离性由锁机制和MVCC实现。事务的持久性由redo 日志来保证。 两类日志概述&#xff1a;…