Unity UI 系统:Unity UI package (uGUI) 使用说明

卡牌游戏 UI 系统

Unity UI 基础概念

布局(Layout)

Unity 的屏幕坐标定义为左下角为 (0, 0),右上角为 (1, 1) 。

锚点(Anchor)

  • 锚点控制 子矩形UI的边 相对 父矩形对应坐标轴的指定比例边 的 距离 保持不变。
    • Anchor Min X 的 值 value 表示:该矩形UI左边的X坐标 相对 父矩形UI的比例值为value处对应的X轴坐标 的距离保持不变。
    • Anchor Min Y 的 值 value 表示:该矩形UI底边的Y坐标 相对 父矩形UI的比例值为value处对应的Y轴坐标 的距离保持不变。
    • Anchor Max X 的 值 value 表示:该矩形UI右边的X坐标 相对 父矩形UI的比例值为value处对应的X轴坐标 的距离保持不变。
    • Anchor Max Y 的 值 value 表示:该矩形UI顶边的Y坐标 相对 父矩形UI的比例值为value处对应的Y轴坐标 的距离保持不变。
  • 所以锚点不能通过控制父控件的大小来直接控制子控件的缩放,只能通过控制子控件边与父控件边的距离来间接控制。

随屏幕大小缩放

  • 通过 GameObject 菜单创建新的画布时,默认情况下也会添加画布缩放器组件
  • 在画布缩放器组件中,可将其 UI Scale Mode 设置为 Scale With Screen Size。使用此缩放模式,可以指定要用作参考的分辨率。如果当前屏幕分辨率小于或大于此参考分辨率,则会相应设置画布的缩放因子,使所有 UI 元素都与屏幕分辨率一起放大或缩小。
  • 其他设置见官方说明。

布局组

网格布局组

Event System

事件系统的主要作用如下:

  • 管理视为选中状态的 GameObject
  • 管理正在使用的输入模块(Input Module)
  • 管理射线投射(如果需要)
  • 根据需要更新所有输入模块

Input Module

输入模块包含定义事件系统行为方式的主要逻辑,可用于:

  • 处理输入
  • 管理事件状态
  • 将事件发送到场景中对象。

该卡牌游戏中采用的就是默认的 Standalone Input Module。该模块与控制器/鼠标/触摸输入具有相同的功能。响应输入时会发送按钮按压、拖拽以及类似事件。

在这里插入图片描述

处理输入事件

如 UI 可以通过实现 IPointerClickHandler 接口的方式来处理用户点击事件:

public class CardUI : MonoBehaviour, IPointerClickHandler
{public void OnPointerClick(PointerEventData eventData){if (eventData.button == PointerEventData.InputButton.Left){if (onClick != null)onClick.Invoke(this);}if (eventData.button == PointerEventData.InputButton.Right){if (onClickRight != null)onClickRight.Invoke(this);}}
}

Raycaster

射线投射器用于确定指针在哪个对象上方。

当场景中存在并启用了射线投射器时,只要从输入模块发出查询,事件系统就会使用该射线投射器。

如果使用多个射线投射器,那么这些射线投射器都会进行针对性投射,并且结果将根据与元素的距离进行排序。

Graphic Raycaster

图形射线投射器用于对 Canvas 进行射线投射。射线投射器查看画布上的所有图形,并确定是否有任何图形被射中。

Canvas Group

画布组 (Canvas Group) 可集中控制整组 UI 元素的某些方面,而无需单独处理每个元素。画布组的属性会影响所在的 GameObject 以及所有子 Object 。

画布渲染器

画布渲染器 (Canvas Renderer) 组件用于渲染Canvas中包含的图形 UI 对象。
在这里插入图片描述

属性

画布渲染器在 Inspector 中没有公开属性

详细信息

菜单 (GameObject > Create UI) 中提供的标准 UI 对象都在需要的地方附加了 Canvas Renderer,但对于自定义 UI 对象,可能需要手动添加此组件。虽然 Inspector 中没有公开属性,但可通过脚本访问一些属性和函数;请参阅脚本参考中的 CanvasRenderer 页面以了解完整的详细信息。

Unity UI 类型

基础 UI 组件

文本(Text)

图像(Image)

原始图像(Raw Image)

图像组件采用精灵,但原始图像采用纹理(无边框等)。

遮罩 (Mask)

遮罩不是可见的 UI 控件,而是一种修改控件子元素外观的方法。遮罩将子元素限制(即“掩盖”)为父元素的形状。因此,如果子项比父项大,则子项仅包含在父项以内的部分才可见。

按钮(Button)

组成
  • Background(Image)
  • Text

滑动条(Slider)

组成
  • Background(Image)
  • Fill Area
    • Fill(image)

滚动条(Scrollbar)

  • 可以通过 Direction 设置滚动方向:
    在这里插入图片描述
组成
  • Background(Image)
    • Sliding Area(Tansform)
      • Handle(Image)

输入区域(InputField)

组成
  • Background(Image)
    • Placeholder(Text)
    • Text

开关(Toggle)

组成
  • Background(Image)
    • CheckMark(Image)
  • Label(Text)

矩形滚动框(Scroll Rect)

组成
  • Background(Image)
    • Viewport(Image + Mask)
      • Content
    • Scrollbar Horizontal(Scrollbar)
    • Scrollbar Vertical(Scrollbar)

下拉选单(Dropdown List)

组成
  • Image
    • Label(Text)
    • DropdownArrow(Image)
    • Template(Scroll Rect)

UI Animation

过渡选项

Color Tint

Sprite Swap

Animator

Animator Controller

  • 控制器会引用其中所用的动画剪辑(Animation Clip),使用状态机来管理各种动画状态和它们之间的过渡。
  • 仅在对人形角色进行动画化时,才需要引用 Avatar。对于其他动画类型,只需Animator Controller。

设置 Trigger

在这里插入图片描述

代码中触发方法:

timeout_animator?.SetTrigger("pulse");

Reference

  • https://docs.unity3d.com/2022.3/Documentation/Manual/com.unity.ugui.html
  • https://zhuanlan.zhihu.com/p/157273459
  • https://zhuanlan.zhihu.com/p/667966938
  • https://www.lfzxb.top/personal-ui-framework-consider/
  • https://developer.unity.cn/projects/63f6c166edbc2a7851283390

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

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

相关文章

s3c2440---中断控制器

一、概述 S3C2440A 中的中断控制器接受来自 60 个中断源的请求。提供这些中断源的是内部外设,如 DMA 控制器、 UART、IIC 等等。 在这些中断源中,UARTn、AC97 和 EINTn 中断对于中断控制器而言是“或”关系。 当从内部外设和外部中断请求引脚收到多个中…

区间的合并

给定 n个区间 [,],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3]和 [2,6]可以合并为一个区间 [1,6]。 输入格式 第一行包含整数 n。 接下来 n行,每行包含两个整数 …

解决python-docx设置字体为宋体无效

环境:python3.12 python-docx 1.1.2 最初使用的设置字体的代码: from docx import Documentfrom docx.oxml.ns import qndoc Document()style doc.styles[Title]style.font.name Times New Roman # 设置西文字体style._element.rPr.rFonts.set(qn(w:e…

828华为云征文|Flexus云服务器X实例快速部署在线测评平台,适用各种信息学教学

文章目录 如何选配Flexus云服务器X实例服务器HydroOJHOJ 服务器资源的选取基础配置实例规格镜像、存储、网络弹性公网IP云服务器名称 部署HydroOJ1.设置安全组、开放端口2.部署HydroOJ回到控制中心,远程登录 部署HOJ安装docker# 安装docker-compose部署HOJ 本篇幅为…

Kafka API操作

文章目录 1、 Kafka 基础API1_Topic基本操作 DML管理2_生产者3_消费者 sub/assign4_自定义分区策略5_序列化6_拦截器 2、Kafka API高级特性1_Offset自动控制2_Acks & Retries3_幂等性4_事务控制1、生产者事务Only2、消费者&生产者事务3、测试需要的三个消费者案例属性 …

常用环境部署(二十)——docker部署OpenProject

一、安装Docker及Docker-compose https://blog.csdn.net/wd520521/article/details/112609796 二、docker拉取OpenProject镜像 1、拉取镜像 docker pull openproject/openproject:14 注意: 拉取镜像的时候会有超时的现象出现,大家重新拉取几次就行…

JavaWeb开发中为什么Controller里面的方法是@RequestMapping?

在Java Web开发中,尤其是在使用Spring MVC框架时,RequestMapping注解被广泛应用于Controller层的方法上,这是因为RequestMapping是Spring MVC提供的一个核心注解,用于将HTTP请求映射到相应的处理器类或处理器方法上。通过这种方式…

AWTK HTML View 控件更新

AWTK HTML View 控件基于 Lite HTML 实现,从最初的版本开始,3 年多过去了,Lite HTML 做了大量的更新,最近抽空将 AWTK HTML View 控件适配到最新版本的 Lite HTML,欢迎大家使用。 AWTK HTML View 控件。HTML View 控件…

【数据结构(初阶)】——二叉树

【数据结构】——二叉树 文章目录 【数据结构】——二叉树前言1. 树的概念及结构1.1 树的概念1.2 树的结构 2. 二叉树的概念及结构2.1 二叉树的概念2.2 二叉树的结构2.3 二叉树的性质 3. 二叉树顺序结构及概念3.1 二叉树的顺序结构3.2 堆的概念及结构3.3 堆的实现3.3.1 堆的基本…

OpenAI 的 o1 大模型在数学和编码方面有了几乎 10 倍的能力提升!

你有没有想过,有一天人工智能可以在数学和编程这两个领域里,真正成为人类的“得力助手”,甚至是超越我们?最近,OpenAI 发布的 o1大模型在这方面取得了几乎 10 倍的能力提升。10 倍!你没有看错。这样的进步让人不禁怀疑:AI 真的能做到“秒懂”数学和编程吗?今天,我们就…

远程访问NAS速度慢??那是因为你没用对。。。

虽然局域网(内网)、公网(外网)经常被提到,但很多人依旧搞不懂分不清楚。。。 其实,简单的方法就是把局域网IP比喻成公司的内部通讯,公网IP看作公共通讯平台。 这样拥有公网IP能被直接远程访问&…

redis内存清理和linux系统清理缓存以及redis启动

1清空所有数据库 redis-cli FLUSHALL 2清空所有数据库redis-cli FLUSHDB 3. 删除指定的缓存键 redis-cli DEL <key>4. 设置键过期 redis-cli EXPIRE <key> <seconds>例如&#xff1a; redis-cli EXPIRE mykey 605.启动redis 这个启动命令要在/usr/loca…

【Canvas与密铺】90年代马赛克密铺效果 1920x1080

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>20世纪90年代马赛克瓷砖效果1920x1080</title><style type&…

MySQL:bin log

redo log 它是物理日志&#xff0c;记录内容是“在某个数据页上做了什么修改”&#xff0c;属于 InnoDB 存储引擎。 而 binlog 是逻辑日志&#xff0c;记录内容是语句的原始逻辑&#xff0c;类似于“给 ID2 这一行的 c 字段加 1”&#xff0c;属于MySQL Server 层。 不管用什…

如何处理DDOS攻击问题

随着信息技术的飞速发展&#xff0c;网络已成为现代社会不可或缺的一部分&#xff0c;极大地便利了个人社交和商业活动。然而&#xff0c;网络空间在创造无限机遇的同时&#xff0c;也潜藏着诸多威胁&#xff0c;其中分布式拒绝服务攻击&#xff08;DDoS&#xff0c;Distribute…

全球工业经济系统极端降水暴露数据集(2010年、2016-2035年和2046-2065年)

全球工业经济系统极端降水暴露数据集 数据介绍 1. 数据的时间覆盖范围&#xff1a; 数据收集时期为2010年、2016-2035年和2046-2065年。 2. 空间覆盖和投影&#xff1a; 空间覆盖范围&#xff1a;全球 经度&#xff1a;-180 - 180 纬度&#xff1a;-90 - 90 投影&#x…

qemu和libvirt的配置对比

libvirt的很多配置选项其实是调用了qemu的接口&#xff0c;但也有增加和优化的地方&#xff0c;本文主要总结这些配置选项&#xff0c;当个手册来查询。 按照centos停服前最后一版centos-8.5.2111提供的rpm查看http://mirrors.aliyun.com/centos/8.5.2111/AppStream/aarch64/o…

【JUC】16-Java对象内存布局和对象头

1. 对象的内存布局 在HotSpot虚拟机里&#xff0c;对象在堆内存中的存储布局可以分为三个部分&#xff1a;对象头、实例数据和对齐填充。 对象头&#xff1a;由对象标记和类型指针。

[数据集][目标检测]烟叶病害检测数据集VOC+YOLO格式612张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;612 标注数量(xml文件个数)&#xff1a;612 标注数量(txt文件个数)&#xff1a;612 标注类别…

精心整理|算法备案大模型备案最新数据汇总

根据《互联网信息服务算法推荐管理规定》第二条 在中华人民共和国境内应用算法推荐技术提供互联网信息服务&#xff08;以下简称算法推荐服务&#xff09;&#xff0c;适用本规定。法律、行政法规另有规定的&#xff0c;依照其规定。前款所称应用算法推荐技术&#xff0c;是指利…