Unity UGUI系统

article/2025/10/6 14:37:01

UI系统对比

对 UI 系统的选择取决于是为 Unity 编辑器开发 UI,还是为游戏或应用程序开发运行时 UI。

UI 的类型UI 工具包Unity UI(uGUI)IMGUI注意事项
运行时(调试)✔ *这指用于调试用途的临时运行时 UI。
运行时(游戏内)✔ *不推荐出于性能原因,Unity 不推荐将 IMGUI 用于游戏内运行时 UI。
Unity Editor不能使用 Unity UI 为 Unity 编辑器创建 UI。

当然对于我来说,那必然是选择UGUI

基本布局

UI是为了什么?当然是美观,不美观的UI就是摆在厕所的满汉全席

画布组件(Canvas)

Canvas是进行 UI 布局和渲染的抽象空间。所有 UI 元素都必须是附加了画布组件的游戏对象的子对象。

Render Mode

Screen Space - Overlay

在此模式下,画布会进行缩放来适应屏幕,然后直接渲染而不参考场景或摄像机(即使场景中根本没有摄像机,也会渲染 UI)。UI 将绘制在所有其他图形(例如摄像机视图)上。请添加图片描述

Screen Space - Camera

在此模式下,画布的渲染效果就好像是在摄像机前面一定距离的平面对象上绘制的效果。如果更改屏幕的大小或分辨率或更改摄像机视锥体,则 UI 将自动重新缩放进行适应,UI 的大小不随距离而变化。场景中比 UI 平面更靠近摄像机的所有 3D 对象都将在 UI 前面渲染,而平面后的对象将被遮挡。请添加图片描述

World Space

此模式将 UI 视为场景中的平面对象进行渲染,可以根据喜好任意定向。画布的大小可以使用矩形变换来设置,但画布在屏幕上的大小将取决于摄像机的视角和距离。其他场景对象可以位于画布后面、穿透画布或位于画布前面。

请添加图片描述

工具栏按钮

在这里插入图片描述
在这里插入图片描述

工具栏按钮

  • Local:是以物体自身为参照的坐标系。

  • Global:是游戏场景中的方向。在游戏场景中世界坐标系是不会随物体的改变而改变

  • Center: Unity自己根据模型的mesh来计算的中心位置,与模型真实中心点没关系。

  • Pivot: 该物体的真正中心点。

    注意:
    当要改变的是模型的坐标、角度、大小,指的是相对于 Pivot 进行的操作,(选择 Pivot 工具)
    若操作的是多个物体。选择 Center 工具后旋转,全部所选物体hi围绕着 Center 中心点旋转。而旋转 Pivot 工具后旋转,每一个所选物体会围绕着自己的真正中心点旋转。
    Transform 组件的 position 属性指的就是 Pivot 中心点。

使用 UI 时,通常最好将这些设置保持为 PivotLocal

矩形变换

轴心

旋转、大小和缩放修改都是围绕轴心进行的,因此轴心的位置会影响旋转、大小调整或缩放的结果。工具栏 Pivot 按钮设置为轴心模式时,可在 Rect Tool中在移动矩形变换的轴心。

旋转好理解,缩放怎么回事呢。假如你的轴心设置在左边中心,那么缩小就是从右侧向左边挤压。而非原本的左右向中间挤压。

锚点

锚点的作用是当父物体拖动,变换时,该物体会相对于锚点做相应的运动

如果矩形变换的父项也是矩形变换,则子矩形变换还可通过各种方式锚定到父矩形变换。

在这里插入图片描述

Anchor Presets按钮中可以将锚点直接设置在一些常用位置,同时可以设置轴心和物体位置
在这里插入图片描述

适应多种分辨率

使用锚点适应不同宽高比:

将对应位置的UI组件锚定在对应角,例如将左上角按钮的锚点设置为左上角。

随屏幕大小缩放:

将画布缩放器组件中的UI Scale Mode 设置为 Scale With Screen Size

组件

可视组件

图像

可以将Sprite应用在图像组件,Image Type 字段可定义应用的精灵的显示方式,提供的选项包括:

  • Simple - 均匀缩放整个Sprite。

  • Sliced - 使用 3x3 精灵分区,确保大小调整不会扭曲角点,而是仅拉伸中心部分。

  • Tiled - 类似于 Sliced,但平铺(重复)中心部分而不是对其进行拉伸。对于完全没有边框的精灵,整个精灵都是平铺的。

  • Filled - 按照与 Simple 相同的方式显示精灵,但不同之处是使用定义的方向、方法和数量从原点开始填充精灵。

    在这里插入图片描述
    在这里插入图片描述

属性:功能:
Source Image表示要显示的图像的纹理(必须作为精灵导入)。
Raycast Target如果希望 Unity 将图像视为射线投射的目标,请启用 Raycast Target
Preserve Aspect确保图像保持其现有尺寸

原始图像(Raw Image)

图像组件采用精灵,但原始图像采用纹理(无边框等)。只有在必要时才应使用原始图像,否则大多数情况都适合使用图像。

UI效果组件

阴影与轮廓
在这里插入图片描述
在这里插入图片描述

交互组件

交互组件至少有一个 UnityEvent,当用户以特定方式与组件交互时将调用该 UnityEvent。

按钮与开关

可以各自添加更改当前值时响应的事件,并且算是过渡选项最常应用的组件。

过渡选项

不同的状态包括正常、突出显示、按下和禁用。可以根据不同的状态来改变颜色,显示不同的精灵,产生动画。如果需要使用动画过渡的话,将Button组件中的Transition选择为Animation,单击“Auto Generate Animation”可自动创建带有四个状态的Animator。通过共享动画控制器,多个按钮可共享相同的行为。**UI 动画过渡模式与 Unity 的旧版动画系统不兼容。**仅应使用Animator组件。

开关组

当用户必须从互斥的一组选项进行选择时,便可使用开关组。常见示例包括选择玩家角色类型、预设颜色和一周中的日期。

值得注意的是,如果在加载场景或实例化组时,开关组中的多个开关为打开状态,则开关组不会立即执行其约束。只有当新开关打开时,其他开关才会关闭。这意味着需要确保在开始时只打开一个开关。

滑动条与滚动条(Slider、Scrollbar)

滑动条控件用于用户通过拖动鼠标从预定范围中选择数值,

滚动条控件用于用户滚动由于太大而无法完全看到的图像或其他视图(比如小地图,一封很长的书信)

自动布局

布局控制器按以下顺序为布局元素分配宽度或高度:

  • 首先,布局控制器将分配最小大小属性(Min WidthMin Height)。
  • 如果有足够的可用空间,布局控制器将分配偏好大小属性(Preferred WidthPreferred Height)。
  • 如果有额外的可用空间,布局控制器将分配灵活大小属性(Flexible WidthFlexible Height)。

适配器

内容大小适配器 (Content Size Fitter)

*属性:**功能:*
Horizontal Fit如何控制宽度。
Unconstrained不根据布局元素伸展宽度。
Min Size根据布局元素的最小宽度来伸展宽度。
Preferred Size根据布局元素的偏好宽度来伸展宽度

控制高度同理

当调整矩形变换的大小时(无论是通过内容大小适配器还是其他工具),大小调整是围绕轴心进行的。这意味着可使用轴心来控制大小调整的方向。

例如,当轴心位于中心位置时,内容大小适配器将在所有方向朝外均匀扩展矩形变换。当轴心位于左上角时,内容大小适配器将向右下方向扩展矩形变换。

宽高比适配器 (Aspect Ratio Fitter)

宽高比适配器可以调整高度来适应宽度或反之,也可以使元素在其父项内部适应或包裹其父项。宽高比适配器不考虑布局信息,例如最小大小和偏好大小。

属性:功能:
Aspect Mode如何调整矩形的大小来强制实施宽高比。
None不让矩形适应宽高比。
Width Controls Height根据宽度自动调整高度。
Height Controls Width根据高度自动调整宽度。
Fit In Parent自动调整宽度、高度、位置和锚点,使矩形适应父项的矩形,同时保持宽高比。父矩形中可能有一些空间不会由此矩形覆盖。
Envelope Parent自动调整宽度、高度、位置和锚点,使矩形覆盖父项的整个区域,同时保持宽高比。此矩形可能比父矩形延伸更广。
Aspect Ratio要强制实施的宽高比。这是宽度除以高度的比值。

布局组

Horizontal Layout Group和Verticle Layout Group

分别将子布局元素横向、纵向排列,

  • 如果布局组处于其最小宽度/高度或更小值,则所有子布局元素也将具有最小宽度/高度
  • 如果垂直布局组高度大于其偏好宽度/高度,则会根据各子布局元素的灵活宽度/高度按比例为子布局元素分配额外的可用空间。

网格布局组

与其他布局组不同,网格布局组会忽略其包含的布局元素的最小大小、偏好大小和灵活大小属性,而是为所有这些元素分配固定大小,此大小则由网格布局组本身的 Cell Size 属性进行定义。

当与内容大小适配器结合使用时,可以设置例如固定宽度和灵活高度的网格

  • Grid Layout Group
    • Constraint:Fixed Column Count
  • Content Size Fitter
    • Horizontal Fit:Preferred Size 或 Unconstrained
    • Vertical Fit:Preferred Size

(灵活宽度和固定高度则相反)


http://chatgpt.dhexx.cn/article/moV3Sbij.shtml

相关文章

UGUI 详解

1.RectTransform RectTransform组件 继承自Transform组件,是2D界面中元素的Transform。 对比Transform增加了新的属性分别是:Anchor(锚点)和 Pivot(轴心点)。 属性: localPosition:图…

UGUI学习笔记(八)UGUI不规则响应区域

一、Unity自带的点击策略 在上一篇文章中我们了解到,UI的默认响应区域是UI元素所在的矩形框线内的区域。这也就意味着,当UI的图形为不规则形状时,点击图形的外部也可能会触发事件。 但其实Unity自带了一种不规则区域点击策略。要想使用它&…

[Unity UGUI图集系统]浅谈UGUI图集使用

**写在前面,下面是自己做Demo的时候一些记录吧,参考了很多网上分享的资源 一、打图集 1.准备好素材(建议最好是根据图集名称按文件夹分开) 2、创建一个SpriteAtlas 3、将素材添加到图集中 4、生成图集 到此,我们的图…

Ngui和Ugui的区别

NGUI的元素更新: UIPanel.LateUpdate采用轮询的方式,每帧都会执行,并且每帧都会有UIPanel.UpdateWidgets这个函数的调用,做的事情就是对这些UI元素的位置、缩放等信息的获取,也就是即使没有变化的UI元素,也…

Unity—UGUI

每日一句:读数、学习 去更远的地方,才能摆脱那些你不屑一顾的圈子 目录 InputFiled输入框 例:用户名和密码 Toggle组件 案例:冷却效果 InputFiled输入框 Text Component 输入文本组件 Text输入内容 Character Limit 输入字符…

【Unity3D】UGUI概述

1 UGUI 与 GUI 区别 GUI控件 在编译时不能可视化,并且界面不太美观,在实际应用中使用的较少。UGUI 在编译时可视化,界面美观,实际应用较广泛。 2 Canvas 渲染模式(Render Mode) Screen Space - Overlay&a…

怎样使用UGUI

什么是 UGUI UGUI 是 Unity 自带的一套 GUI 系统,含有基本的一些 UI 控件。 UGUI 控件有哪些? 我们常用的有 Canvas,Text,Image,Button,Toggle,Slider,Scroll Bar,Scroll…

Unity3D UGUI系列之合批

目录 1. 什么是UGUI的合批1.1 准备工作1.2 批处理1.3 批处理的意义1.4 UGUI的合批 2 分析工具的使用2.1 Frame Debugger的使用2.2 Profiler-UI的使用 3 UGUI合批规则3.1 UGUI合批初体验3.2 UGUI合批被打断初体验3.3 UGUI合批规则详解3.3.1 合批规则3.3.2 合批规则示例13.3.3 合…

unity中NGUI与UGUI的区别?

什么是UI? UI即User Interface(用户界面)的简称。泛指用户的操作界面,UI设计主要指界面的样式,美观程度。而使用上,对软件的人机交互、操作逻辑、界面美观的整体设计则是同样重要的另一个门道。好的UI不仅是让软件变得…

【UGUI】UGUI入门,系统介绍

Unity 2017.1.0f3 常用的UI控件 添加UI控件 创建UI控件时,如果没有Canvas和EventSystem系统会自动创建。 Canvas是画布,是所有UI控件的根类,所有UI控件都必须在Canvas上绘制。如果UI控件不在Canvas下,将无法正常渲染显示。 Eve…

UGUI框架

记录最新学习的UGUI框架。 UIType类保存面板基本信息(名称、路径),该面板会在具体的面板类里面(StartPanel)进行实例化。 public class UIType {private string name;public string Name { get > name; }private …

UGUI的简单理解

1.Canvas(画布) UGUI中几乎所有的组件都要在Canvas下搭建 2.EventSysteam(事件系统) 如果进行UI搭建的时候,缺少或删除了EventSysteam的话会导致UGUI中的组件无法交互,无法发生事件. 3.Panel 平时我们进行UI工程搭建的时候,我们都会先创建Panel面板,创建Panel面板的…

UGUI底层

关于UGUI底层的小知识---上 (转雨松momo) 1 | UGUI原理简述 1.1 原理 首先得生成显示UI用的Mesh,如图1-1所示,一个矩形的Mesh,由4个顶点,2个三角形组成,每个顶点都包含UV坐标,如果需要调整颜色&#xf…

UGUI组件详解

什么是 UGUI UGUI 是 Unity 自带的一套 GUI 系统,含有基本的一些 UI 控件。 UGUI 控件有哪些? 我们常用的有 Canvas,Text,Image,Button,Toggle,Slider,Scroll Bar,Scroll…

【Unity基础】ugui的基础知识篇

文章目录 前言一、常用用可视化控件1、Image2、RawImageI.和Image的区别 3、Text组件4、画布是怎么渲染出可视化UI的?II.这里整理一下渲染相关的关系图,如下: 5、关于画布的布局重构 二、Button交互组件1、Button组件的源码以及使用方式2、Button组件是如…

Unity之UGUI详解

UGUI 文章目录 UGUI六大基础组件概述Canvas对象上依附的:CanvasCanvas ScalerGraphic RaycasterRectTransform EventSystem对象上依附的:EventSystemStandalone Input Module Canvas画布组件Screen Space overlayScreen Space CameraWorld Space CanvasS…

using namespace std

整体认识 —— 解决命名冲突 一个简单的C程序&#xff1a; #include<iostream>using namespace std;int main(int argc,char **argv) {cout<<"hello world !"<<endl;system("pause"); // 让程序暂停,按任意键继续 注意&#xff0c;…

K8S:Namespace详解

Namespace概念 Kubernetes 支持多个虚拟集群&#xff0c;它们底层依赖于同一个物理集群&#xff0c;这些虚拟集群被称为命名空间。 命名空间 namespace 是 k8s 集群级别的资源&#xff0c;可以给不同的用户、租户、环境或项目创建对应的命名空间。 在创建pod的时候可以指定p…

TypeScript中的命名空间—namespace

TypeScript中的命名空间—namespace 什么是命名空间&#xff1f;在很多语言中都有这个概念。 命名空间是为了解决命名冲突。比如你在代码的不同地方&#xff0c;都定义了同名但是不同含义的函数、变量等&#xff0c;虽然不提倡这么做&#xff0c;但是有时候需要这么做。那怎么…

c++ 中的 namespace 用法

多人代码的整合&#xff0c;namespace 还是非常有用的。可以很轻松的避免变量与函数一样的命名 1. namespace 在 单个头文件 中使用 下面给一个简单示例演示命名空间和自定义头文件的使用&#xff0c;代码如下&#xff1a; compare.h&#xff1a; namespace compare{double…