Unity 3D UGUI 系统一口气讲完!(^U^)ノ~YO

news2024/11/19 16:37:48

UGUI Canvas 画布

Canvas画布是摆放所有 UI 元素的区域,在场景中创建的所有控件都会自动变为 Canvas游戏对象的子对象。

若场景中没有画布,在创建控件时会自动创建画布。

不论是你主动创建还是被动创建,系统都会自动创建一个名为 EventSystem 的游戏对象,该对象挂载了若干与事件监听相关的组件,可供设置。

渲染模式

在画布属性栏中有一个 Render Mode 属性。

  1. Screen Space-Overlay 渲染模式。

在 Screen Space-Overlay 渲染模式下,场景中的 UI 会被渲染到屏幕上,如果屏幕大小或分辨率发生改变,画布会自动适配。

该模式下不需要 UI 摄像机, UI 将永远出现在所有摄像机的最前面。

参数功能
Pixel Perfect重置元素大小和坐标,使贴图的像素完美对应到屏幕像素上。
Sort Order排列顺序。

  1. Screen Space-Camera 渲染模式。

Screen Space-Camera 渲染模式类似于 Screen Space-Overlay 渲染模式。

这种渲染模式下,画布被放置在指定摄像机前的一个给定距离上,它支持在 UI 前方显示 3D 模型与粒子系统等内容,通过指定的摄像机 UI 被呈现出来,如果屏幕大小改变或更改了分辨率,画布将自动更改大小以适配屏幕。

参数功能
Pixel Perfect重置元素大小和坐标,使贴图的像素完美对应到屏幕像素上。
Render CameraUI 绘制所对应的摄像机。
Plane DistanceUI 距离摄像机镜头的距离。
Sorting Layer界面分层,执行 Edit → Project Setting → Tags and Layers → Sorting Layers 命令进 行界面分层,越下方的层在界面显示时越在前面。
Order Layer界面顺序,该值越高,在界面显示时越在前面。

  1. World Space 渲染模式。

在 World Space 渲染模式下呈现的 UI 好像是 3D 场景中的一个 Plane 对象。与前两种渲染模式不同,其屏幕的大小将取决于拍摄的角度和相机的距离。

它是一个完全三维的 UI,也就是把 UI 也当成三维对象,例如摄像机离 UI 远了,其显示就会变小,近了就会变大。

参数功能
Event Camera设置用来处理用户界面事件的摄像机。
Sorting Layer界面分层,执行 Edit → Project Setting → Tags and Layers → Sorting Layers 命令进 行界面分层,越下方的层在界面显示时越在前面。
Order Layer界面顺序,该值越高,在界面显示时越在前面。

UGUI Event System 事件系统

在 Unity 3D 中创建 UGUI 控件后,会同时创建 Event System 事件系统的 GameObject,用于控制各类事件。

Unity 3D 自带两个 Input Module ,一个用于响应标准输入,另一个用于响应触摸操作。

Input Module 封装了 Input 模块的调用,根据用户操作触发各 Event Trigger

Event System 事件处理器

  1. Event System 事件处理组件。

将基于输入的时间发送到应用程序中的对象,使用键盘、鼠标、触摸或自定义输入均可。

  1. Standalone Input Module 独立输入模块。

基于输入 InputManager 管理器的状态发送事件,用于鼠标、键盘和控制器。该模块被配置为查看 InputManager 。

  1. Touch Input Module 触控输入模块。

被设计为使用在可触摸的基础设备上。

 

UGUI Panel 控件 

Unity 3D panel 控件又叫面板,该面板实际上就是一个容器,在其上可放置其他 UI 控件。

当移动该面板时,放在其中的 UI 控件就会跟随移动,这样可以更加合理与方便地移动与处理一组控件。

拖动面板控件的 4 个角或 4 条边可以调节面板的大小。

一个功能完备的 UI 界面往往会使用多个 Panel 容器控件,而且一个面板里还可套用其他面板,如下图所示。

当面板被创建时,会默认包含一个 Image (Script 组件)。

  1. Source Image 用来设置面板的图像。

  1. Color 用来改变面板的颜色。

UGUI Text 控件

在 Unity 3D UGUI 中创建的很多 UI 控件都有一个支持文本编辑的 Text 控件。

Text 控件也被称为标签。Text 区域用于输入将要显示的文本。通过它可以设置字体、样式、字号等内容。

参数列表

参数描述
Font设置字体。
Font Style设置字体样式。
Font Size设置字体大小。
Line Spacing设置行间距(多行)。
Rich Text设置富文本。
Alignment设置文本在 Text 框中的水平以及垂直方向上的对齐方式。
Horizontal Overflow设置水平方向上溢出时的处理方式。分两种:Wrap(隐藏);Overflow(溢出)
Vertical Overflow设置垂直方向上溢出时的处理方式。分两种:Truncate(截断);Overflow(溢出)
Best Fit设置当文字多时自动缩小以适应文本框的大小
Color设置字体颜色

UGUI Image 控件 

Unity 3D Image 控件除了两个公共的组件 Rect Transform 与 Canvas Renderer 外,默认的情况下就只有一个 Image 组件,如下图所示。

其中,Source Image 是要显示的源图像,要想把一个图片赋给 Image,需要把图片转换成精灵格式,转化后的精灵图片就可拖放到 Image 的 Source Image 中了。

转换方法为:在 Project 视图中选中要转换的图片,然后在 Inspector 属性面板中,单击 Texture Type(纹理类型)右边的下拉列表,选中 Sprite(2D and UI)并单击下方的 Apply 按钮,就可以把图片转换成精灵格式,然后就可以拖放到 Image 的 Source Image 中了。

参数列表

参数描述
Color设置应用在图片上的颜色
Material设置应用在图片上的材质
Image Type设置贴图类型

UGUI Raw Image 控件 

Unity 3D Raw Image 控件向用户显示了一个非交互式的图像,如下图所示。它可以用于装饰、图标等。

Raw Image 控件类似于 Image 控件,但是,Raw Image 控件可以显示任何纹理,而 Image 只能显示一个精灵。

参数列表

参数描述
Texture设置要显示的图像纹理
Color设置应用在图片上的颜色
Material设置应用在图片上的材质
UV Rect设置图像在控件矩形中的偏移和大小,范围为0〜1

UGUI Button 控件 

除了公共的 Rect Transform 与 Canvas Renderer 两个 UI 组件外,Unity 3D Button 控件还默认拥有 Image 与 Button 两个组件,如下图(a)所示。

Image 组件里的属性与前面介绍的是一样的。Button 是一个复合控件,其中还包含一个 Text 子控件,通过此子控件可设置 Button 上显示的文字的内容、字体、文字样式、文字大小、颜色等,与前面所讲的 Text 控件是一样的。

Button 控件属性

  1. Interactable(是否启用交互)。

如果把该选项取消,则该 Button 在运行时将不可点击,失去了交互性。

  1. Transition(过渡方式)。

共有 4 个选项,如下图(b)所示。默认为Color Tint(颜色色彩)。

  • None:没有过渡方式。

  • Color Tint:颜色过渡,相关属性参考下文列表。

  • Sprite Swap:精灵交换,需要使用相同功能、不同状态的贴图,相关属性参考下文列表。

  • Animation:动画过渡。

Color Tint 属性

属性描述
Target Graphic设置目标图像。
Normal Color设置正常颜色。
Highlighted Color设置高亮色。
Pressed Color设置单击色。
Disabled Color设置禁用色。
Color Multiplier设置颜色倍数。
 Fade Duration设置变化持续的时间。

Sprite Swap 属性

属性描述
Target Graphic设置目标图像。
Highlighted Sprite设置鼠标经过时的贴图。
Pressed Sprite设置单击时的贴图。
Disabled Sprite设置禁用时的贴图。

UGUI Toggle 控件 

Unity 3D Toggle 控件也是一个复合型控件,如下图所示。它有 Background 与 Label 两个子控件,而 Background 控件中还有一个 Checkmark 子控件。

Background 是一个图像控件,而其子控件 Checkmark 也是一个图像控件,其 Label 控件是一个文本框,通过改变它们所拥有的属性值,即可改变 Toggle 的外观,如颜色、字体等。

参数列表

属性描述
Is On设置复选框默认是开还是关。
Toggle Transition设置渐变效果。
Graphic用于切换背景,更改为一个更合适的图像。
Group设置多选组。

UGUI Slider 控件 

在游戏的 UI 界面中会见到各种滑块,用来控制音量或者是摇杆的灵敏度。

Unity 3D Slider 控件也是一个复合控件,Background 是背景,默认颜色是白色,Fill Area 是填充区域,如下图所示。

Slider 控件的一个需要注意的参数是 Whole Number,该参数表示滑块的值是否只可为整数,开发人员可根据需要进行设置。

除此以外,Slider 控件也可以挂载脚本,用来响应事件监听。

参数列表

属 性描述
Fill Rect设置填充矩形区域。
Handle Rect设置手柄矩形区域。
Direction设置 Slider 的摆放方向。
Min Value设置最小数值。
Max Value设置最大数值。
Value设置滑块当前的数值。

UGUI Scrollbar 控件 

Unity 3D Scrollbar(滚动条)控件可以垂直或水平放置,主要用于通过拖动滑块以改变目标的比例,如下图所示。

它最恰当的应用是用来将一个值变为指定百分比,最大值为1(100%),最小值为0(0%),拖动滑块可在0和1之间改变,例如改变滚动视野的显示区域。

参数列表

属 性描述
Handle Rect设置最小值与最大值之间的范围,也就是整个滑条的最大可控制范围。
Direction设置滚动条的方向为从左至右、从上至下或其他的方向。
Value设置当前滚动条对应的值。
Size设置操作条矩形对应的缩放长度,即 handle 部分的大小,取值为 0〜1。
Numbers Of Steps设置滚动条可滚动的位置数目。
On Value Changed设置值改变时触发消息。

UGUI Input Field 控件 

Unity 3D Input Field 控件也是一个复合控件,包含 Placeholder 与 Text 两个子控件,如下图所示。

其中,Text 是文本控件,程序运行时用户所输入的内容就保存在 Text 控件中,Placeholder 是占位符,表示程序运行时在用户还没有输入内容时显示给用户的提示信息。

Input Field 输入字段组件与其他控件一样,也有 Image(Script)组件,另外也包括 Transition 属性,其默认是 Color Tint,如下图所示,具体属性如下表所示。

参数列表

属 性描述
Interactable设置是否启用 Input Field 组件。勾选表示输入字段可以交互,否则表示不可以交互。
Transition设置当正常显示、突出显示、按下或禁用时输入字段的转换效果。
Navigation设置导航功能。
Text Component设置此输人域的文本显示组件,用于显示用户输人的文本框。
Text设置此输入域的初始值。
Character Limit设置此输人域最大的输入字符数,0 为不限制输入字符数。
Placeholder设置此输入域的输人位控制符,对于任何带有 Text 组件的物体均可设置此项。

另外还有两个较为特殊的参数:

  1. Content Type 属性。

输入此输入域的内容类型,包括数字、密码等,常用的类型如下:

  • Standard:允许输入任何字符,只要是当前字体支持的即可。

  • Autocorrected:自动校正输入的未知单词,并建议更合适的替换候选对象,除非 用户明确地覆盖该操作,否则将自动替换输入的文本。

  • Integer Number:只允许输入整数。

  • Decimal Number:允许输入整数或小数。

  • Alpha numeric:允许输入数字和字母。

  • Name:允许输入英文及其他文字,当输入英文时能自动提示姓名拼写。

  • Email Address:允许输入一个由最多一个 @ 符号组成的字母数字字符串。

  • Password:输入的字符被隐藏,只显 7K 星号。

  • Pin:只允许输入整数。输入的字符被隐藏,只显示星号。

  • Custom:允许用户自定义行类型、输入类型、键盘类型和字符验证。

  1. Line Type 属性。

设置当输入的内容超过输入域边界时的换行方式:

  • Single Line:超过边界也不换行,继续向右延伸此行,即输入域中的内容只有一行。

  • Muhi Line Submit:允许文本换行。只在需要时才换行。

  • Multi Line Newline:允许文本换行。用户可以按回车键来换行。

UGUI 实践案例 

在前面的几节我们从整体上对图形用户界面下的各个控件进行了详细讲解,增加了对新版的图形用户界面 UGUI 的了解。

新版的 UGUI 系统比 OnGUI 系统相比有了很大提升,使用起来方便,控件更加美观,接下来我们使用 UGUI 控件开发一个完整的游戏界面。

案例设计

本案例基于 UGUI 技术实现一套完整的游戏界面,该游戏界面包括界面背景、文字标题、进入按钮、设置页面等内容,效果如下所示。

案例实施

  1. 导入 Menu and Fonts 资源包,该资源包包含了背景图片、按钮、图标及其他游戏元素。

  1. 在菜单中执行 GameObject → UI → Image 命令,在场景中添加一个 Image,用来显示 Sprite texture,它继承 Canvas。同时加载 EventSystem 负责处理场景中的输入、映射和事件。

  1. 在项目浏览器中打开 Menu 文件,找到 munu_background 图片,把它拖到 Source Image 区域中,并调整大小。

  1. 按照同样的昂发在 Menu 文件中搜索 header_label 图片,然后在菜单中执行 GameObject → UI → Image 命令,将 header_label 拖到 Source Image 区域中,同样对大小进行调整。

  1. 在菜单中执行 GameObject → UI → Button 命令,在场景中加入一个按钮,然后选中嵌入的 Text 元素,设置文本为 Start Game,并设定字体样式以及字体大小。

  1. 选中 Button,在 Inspector 面板中找到 Source Image,并赋予图片,效果如下图所示。

  1. 创建脚本 NewBehaviourScript,编写代码如下:

 
  1. using UnityEngine;
  2. using System.Collections;
  3. public class NewBehaviourScript:MonoBehaviour{
  4. public void StartGame(){
  5. Application.LoadLevel("RocketMouse");
  6. }
  7. }

  1. 脚本链接。创建空物体,将脚本链接到空物体上,然后在 Hierarchy 视图中选择创建好的按钮,向下滑到 On Click 列表中,单击加号,接下来拖动 Hierarchy 视图中的空物体,把它添加到 Inspector 列表中,在下拉框中把它的功能设置为 No Function,最后在打开的菜单中选择 UIManagerScript\StartGame(),如下图所示。

  1. 创建一个新的 Button 控件,并将齿轮图片赋予它,如下图所示。

  1. 新建 C# 脚本,将其命名为 setting,编写代码,并链接到空物体上,代码如下:

 
  1. using UnityEngine;
  2. using System.Collections;
  3. public class setting:MonoBehaviour{
  4. public GameObject panel;
  5. private bool isclick=false;
  6. void playRenwu(bool isnotclick){
  7. panel.gameObject.SetActive(isnotclick);
  8. }
  9. public void Onclickbutton(){
  10. if(isclick==false){
  11. isclick=true;
  12. playRenwu(true);
  13. }else{
  14. isclick=false;
  15. playRenwu(false);
  16. }
  17. }
  18. }

  1. 在菜单中执行 GameObject → UI → Panel 命令,赋予背景图片,并在其上添加 Button 控件,效果如下图所示。

  1. 将创建好的 panel 赋予 setting 脚本,如下图所示。

  1. 修改 NewBehaviourScript 脚本。

 
  1. using UnityEngine;
  2. using System.Collections;
  3. public class NewBehaviourScript:MonoBehaviour{
  4. public void StartGame(){
  5. Application.LoadLevel("RocketMouse");
  6. }
  7. public void Back(){
  8. Application.LoadLevel("menu");
  9. }
  10. }

  1. 隐藏 panel,然后设置 panel 下的 button 脚本链接,将 Back 界面跳转函数赋予 Button,实现界面跳转功能。

  1. 保存场景,并执行 build 命令发布,就可以自行测试了。

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

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

相关文章

使用Python解决数据分析中的相关性分析

目录 1.相关系数基础1.1 使用Pandas计算皮尔逊相关系数1.2 计算物品A与其他物品的相关系数1.3 用户间的相关系数1.4 获取相关系数矩阵 2. 相似度计算的Python实现2.1 欧式距离2.2 余弦相似度2.3 皮尔逊相关系数的手动实现 3. 总结 在数据分析中,相关系数是衡量两个变…

应用案例 | HK-MSR数据记录仪如何计算滑雪时膝盖上的应力?

计算滑雪时膝盖上的应力 阿尔卑斯山高山滑雪运动员在滑雪时对膝盖产生的压力有多大?Thea Waldleben,现任瑞士青年速降赛冠军,在她的 "Maturaarbeit"(考试项目)中回答了这个问题。通过使用HK-MSR数据记录仪&…

Python OpenCV精讲系列 - 边缘检测深入理解(十三)

💖💖⚡️⚡️专栏:Python OpenCV精讲⚡️⚡️💖💖 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计,从基础概念入手,逐步深入到图像处理、特征检测、物体识…

地质工程专业职称申报条件详细解读

一、初级(助理)地质工程工程师评审条件: 1、理工类或者地质工程类专业毕业 2、专科毕业满3年或本科毕业满1年 3、研究生毕业,从事本专业技术工作,当年内考核认定 二、中级地质工程工程师评审条件: 1、理工…

解决远程连接AlpineLinux Mysql/MariaDB 无法连接的问题

&#x1f525;博客介绍&#xff1a; EvLast &#x1f3a5;系列专栏&#xff1a; << C项目>> <<数据结构与算法>> << 算法入门>> &#x1f3a5; 当前专栏:<< C项目>> 专题 : 解决开发中的日常Bug &#x1f44d;&#x1f44…

服务端的 Session 详解

0x01&#xff1a;Session 简介 Session 是在 Cookie 的基础上发展的&#xff0c;其主要功能和 Cookie 一样&#xff0c;都是为了解决 HTTP 无状态的痛点&#xff0c;和 Cookie 不同的是&#xff0c;它是将大部分数据存储在了服务端&#xff0c;而只给用户一个 SESSID&#xff…

django学习入门系列之第十点《A 案例: 员工管理系统21》

文章目录 16 Ajax(订单案例)16.9 编辑想要去数据库中获取数据时:对象/字典将具体内容的错误信息传入到前端&#xff08;Ajax&#xff09;将数据库数据传入前端&#xff08;Ajax&#xff09;清空新建订单的数据 16.10 编辑后保存 往期回顾 16 Ajax(订单案例) 16.9 编辑 点击编辑…

TCN预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测

TCN预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测 目录 TCN预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料预测效果

Python第一篇:Python解释器

一&#xff1a;python解释器 python解释器是一款程序&#xff0c;用于解释、执行Python源代码。 一般python解释器都是c python使用c编写的&#xff0c;还有j python用java编写的。 二&#xff1a;python下载 三&#xff1a;使用示例 python进入控制台&#xff0c;python。 三…

【react案例】实现评论列表

1. 需求 展示评论列表实现删除功能 2.1 只有自己的评论才展示删除按钮 2.2 点击删除按钮&#xff0c;删除当前评论tab切换&#xff08;点击对应tab&#xff0c;对tab文案高亮处理&#xff09;评论高亮评论排序&#xff08;最新、最热&#xff09; 2. 实现思路 useState维护评…

基于vue框架的大同传统文化非物质文化宣传管理系统jzo9d(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,非遗类型,文化遗产 开题报告内容 基于Vue框架的大同传统文化非物质文化宣传管理系统开题报告 一、研究背景 在全球化加速的今天&#xff0c;传统文化的保护与传承面临着前所未有的挑战。大同&#xff0c;作为中国历史文化名城&a…

职场能力强的人都在做什么---今日头条

【职场里,能力强的人都在做哪些事... - 今日头条】https://m.toutiao.com/is/ikn6kt9q/ 知识雷达 2024-09-21 16:33 目录 职场里,能力强的人都在做哪些事呢? 1、复盘; 2、多角度思考;3、记录信息; 4、永远积极主动;5、主动获取信息差; 6、明确人和人的关系;7、…

STM32杂项

STM32杂项 1.启动过程2.中断3.GPIO4.Systick5.串口printf6.独立看门狗 记录单片机在工作中遇到的问题和特殊情况。 1.启动过程 M3/M4/M7内核复位后&#xff0c;做的第一件事&#xff1a; 1.从地址0x0000 0000处取出堆栈指针MSP的初始值&#xff0c;该值就是栈顶地址。 2.从地址…

2024必备中英互译利器全知道

现在英语目前还是学习最广泛的第二语言&#xff0c;所以很多资料都有英文的版本。如果外语不好&#xff0c;那中英互译翻译工具就能帮我们解决这个问题。今天我们一起来探讨下有哪些好用的翻译工具。 1.福昕在线翻译 链接直达>>https://fanyi.pdf365.cn/doc 这个工具…

【linux】进度条

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.屏幕缓冲区换行&#xff08;LF, \n&#xff09;和回车&#xff08;CR, \r&#xff09;换行回车在屏幕缓冲区中的作用代码块1&#xff1a;代码块2&#xff1a; 02.进度条优化版…

SpringBoot3+Swagger3(最新版springdoc-openapi教程)

第一步&#xff1a;引入springdoc-openapi依赖 <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.6.0</version></dependency> 第二步&#xff1a; 配置…

打开ffmpeg编码器的时候报错:avcodec_open2()返回-22

[h264_v4l2m2m 0x555555617a00] Could not find a valid device [h264_v4l2m2m 0x555555617a00] cant configure encoder 前言&#xff1a;先做一个操作&#xff0c;查找编码器的时候&#xff0c;使用名字查找的方式&#xff1a; const AVCodec *avcodec_find_encoder_by_n…

ubuntu数据硬盘故障导致系统启动失败

背景&#xff1a; 系统盘损坏或者/etc/fatab误修改导致开机启动挂载失败系统无法启动 解决方法 重启

BFS 解决最短路径问题, 迷宫中离入口最近的出口,最小基因变化,单词接龙,为高尔夫比赛砍树

文章目录 1926. 迷宫中离入口最近的出口433. 最小基因变化127. 单词接龙675. 为高尔夫比赛砍树 1926. 迷宫中离入口最近的出口 边权为1的最短路径问题 我们要知道上下左右都是可以走的 &#xff08;用队列&#xff09;走过的地方不要在走了&#xff0c;这样会进入死循环&#x…

零信任内网安全访问

随着互联网的持续发展&#xff0c;便捷的共享方式极大地提高了企业的生产力和工作效率&#xff0c;但随之也给企业内网带来了极大的安全隐患。企业内网承载大量的核心资产和机密数据&#xff0c;一旦受到攻击可能会造成大量损失&#xff0c;因此&#xff0c;如何通过零信任内网…