【Unity游戏开发教程】零基础带你从小白到超神30——UI组件

news/2024/11/30 7:43:13/

UI设计又称界面设计,是指对软件的人机交互、操作逻辑、界面美观的整体设计,UI就相当于人可以看到的界面,并且可以对UI进行交互。

Unity 3D的UI,分为UGUI和GUI,UGUI主要是图形渲染界面,搭建方便,学习比较容易,GUI主要是代码渲染界面,需要在编写代码时就思考如何完善界面布局,在运行项目时才能看到效果

UGUI常用组件介绍

1:Canvas
所有的UI组件都在画布的子集里,画布相当于所有UI组件的容器,每当创建一个UI物体时,Canvas都会自动创建,所有的UI元素都必须是Canvas的子物体,和Canvas一同创建的还有一个EventSystem,它是一个基于Input的事件系统,可以对键盘 触摸 鼠标自定义输入进行处理

Canvas:控制UI的渲染模式

Render Mode:渲染模式Screen Space overlay:让UI始终位于界面最前面Screen Space camera:赋值一个相机 按照相机的距离前后显示UI和物体World Space:让画布变成一个3D物体 可以进行移动旋转等等

Canvas Scaler:控制UI画布的缩放比例

Constant Pixel Size:固定像素大小 无论屏幕尺寸如何变化,UI都不会变化Scale With Screen Size:根据屏幕分辨率,自动调节UI比例Constant Physical Size:固定物理像素大小 

Graphic Raycaster:控制是否让UI响应射线点击

Ignore Reversed Graphic:忽略反转的UI  UI反转后点击无效Blocking Objects:阻挡点击物体 当UI前有物体时 点击前面的物体射线会被阻挡Blocking Mask:阻挡层级 当UI前有设置的层级时 点击前面的物体射线会被阻挡

2:Text
Text组件是UGUI中最常用的组件,它的作用是对文本数据进行处理并显示

Font:显示文字的字体Line Spacing:行与行之间的垂直距离Rich Text:富文本格式 勾选后可以显示文本中的标记标签信息

UGUI创建的所有组件都会默认勾选。

3:Image
Image组件是UGUI中比较常用的组件,用来控制和显示图片

Source Image:需要显示的图片的来源Color:图片的颜色Material:渲染图像的材质Raycast Target:能否接收到射线检测Image Type:图片的排列方式

Texture Type:(一般为图片类型),一般是选择sprite(2D and UI),之后点击Apply

Simple:标准的Sprite,自适应大小
在这里插入图片描述

Sliced:九宫格切片,创建固定边框控件的最佳选择。边框固定,图片中间做拉伸(缩放),如角色头像,
按钮背景
在这里插入图片描述

Tiled:平铺,一个Sprite缩放填充整个区域,如背景平铺
在这里插入图片描述

最后一个filled。
用来显示图片当中的某一部分的,用来制作技能CD冷却时间或进度条。
FillMethod表示以什么方式进行切割,其中 有水平方式、垂直方式,90、180、360度圆方式进行切割。
FillOrigin表示从什么地方开始切割,其中有上、下、左、右几种方式。
FillAmount表示切割哪一部分,0表示不显示,1表示全部显示。

4:Button
Button是一个按钮组件,在开发中经常使用,通过单击按钮执行某些事件、动作、切换状态等

Interactable:是否启动按钮 取消勾选则按钮失效Transition:按钮状态过渡的类型Navigation:导航On Click:按钮单击事件的列表 设置单击后执行哪些函数Button组件可以通过On Click手动添加监听事件,也可以通过代码动态添加监听事件

Button按钮监听函数测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Test_16_1 : MonoBehaviour
{public void OnClickTest(){Debug.Log("点击了按钮");}
}

下面介绍代码动态添加监听事件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Test_16_2 : MonoBehaviour
{Button TestBtn;void Start(){TestBtn = GetComponent<Button>();TestBtn.onClick.AddListener(OnClickTest);}public void OnClickTest(){Debug.Log("点击了按钮");}
}

然后将脚本添加到Button组件上执行即可

5:Toggle
在项目开发时,需要一个按钮模拟和控制开关,这就是Toggle的作用,Toggle组件通常进行状态判断,如是否记住密码,是否开启某些指令等

Toggle按钮监听函数测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Test_16_3 : MonoBehaviour
{public void OnValueChanged(bool isOn){if (isOn){Debug.Log("开启");}else{Debug.Log("关闭");}}
}

将脚本绑定到相机对象上,再添加到OnValueChanged单击事件中

下面通过代码动态添加监听事件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Test_16_4 : MonoBehaviour
{Toggle TestToggle;void Start(){TestToggle = GetComponent<Toggle>();TestToggle.onValueChanged.AddListener(OnValueChanged);}public void OnValueChanged(bool isOn){if (isOn){Debug.Log("开启");}else{Debug.Log("关闭");}}
}

6:Slider
Slider是一个滑动条组件,一般用来制作血条或者进度条

下面我们来做一个滑动条自增的效果,类似于进度条 脚本代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Test_16_5 : MonoBehaviour
{public Slider m_Slider;//Slider组件public Text m_Text;//Text组件void Start(){//值初始化m_Slider.value = 0;m_Text.text = "";}void Update(){if (m_Slider.value < 100){m_Slider.value += Time.deltaTime;//将value的取小数点两位m_Text.text = m_Slider.value.ToString(("F")) + "%";}}
}

7:ScrollView
ScrollView组件是一个滚动窗口以及区域组件,在做游戏背包或者商城展示大量物品时,可以使用ScrollView组件

8:Dropdown
下拉菜单,可用于快速创建大量选择项、创建下拉菜单模板等

Dropdown组件比较常用的功能有添加选项、添加监听事件等等

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Test_16_6 : MonoBehaviour
{public Dropdown m_Dropdown;void Start(){//第一种添加下拉选项的方案Dropdown.OptionData data = new Dropdown.OptionData();data.text = "第一章";Dropdown.OptionData data2 = new Dropdown.OptionData();data2.text = "第二章";m_Dropdown.options.Add(data);m_Dropdown.options.Add(data2);//第二种添加下拉选项的方案List<Dropdown.OptionData> listOptions = new List<Dropdown.OptionData>();listOptions.Add(new Dropdown.OptionData("第三章"));listOptions.Add(new Dropdown.OptionData("第四章"));m_Dropdown.AddOptions(listOptions);m_Dropdown.onValueChanged.AddListener(OnValueChanged);}public void OnValueChanged(int value){switch (value){case 0:Debug.Log("第一章");break;case 1:Debug.Log("第二章");break;case 2:Debug.Log("第三章");break;case 3:Debug.Log("第四章");break;default:break;}}
}

9:InputField
InputField组件是输入框组件,是一个用来管理输入的组件,通常用来输入用户的账号,密码或者再聊天室输入文字等等

下面添加单击登录按钮后显示密码和账号功能 代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Test_16_7 : MonoBehaviour
{public InputField m_InputFieldName;public InputField m_InputFieldPwd;public Button m_ButtonLogin;public Text m_TextInfo;void Start(){m_ButtonLogin.onClick.AddListener(Button_OnClickEvent);}public void Button_OnClickEvent(){m_TextInfo.text = "账号:" + m_InputFieldName.text + " 密码:" + m_InputFieldPwd.text;}
}

运行程序 输入账号和密码,单击登录按钮可以看到账号和密码显示出来


http://www.ppmy.cn/news/35910.html

相关文章

Endor Labs:2023年十大开源安全风险

近日&#xff0c;Endor Labs发布了一份新报告&#xff0c;确定了2023年的十大开源安全风险。报告显示&#xff0c;许多软件公司依赖于开源软件代码&#xff0c;但在如何衡量和处理与开源软件相关的风险和漏洞方面缺乏一致性。调查发现&#xff0c;在应用程序中超过80%的代码可能…

Maven和Eclipse联合开发

Maven和Eclipse联合开发 java list 对象个数 size java List 取第一个对象.get(0) baseCrmSpecialclient.get(0).getFxid() System.out.print 换行 System.out.print(item.getCode()"\r\n"); java for循环用法 https://blog.csdn.net/rank/list/total Java for-ea…

【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”

【第十一届泰迪杯B题产品订单的数据分析与需求预测产品订单的数据分析与需求预测 】第一大问代码分享&#xff08;后续更新LSTMinformer多元预测多变量模型&#xff09; PS: 代码全写有注释&#xff0c;通俗易懂&#xff0c;包看懂&#xff01;&#xff01;&#xff01;&…

内存泄漏 定位方法

目录 内存概念 物理内存 虚拟内存 内存泄漏 定位方法和手段 1.MemInFo MemTotal MemFree MemAvailable Cached 2 vmalloc info 3.Kmemleak 算法原理 使用方法 参考文献与链接&#xff1a; 如果你点进这篇文章&#xff0c;那么要么你是一个C\C程序员&#xff0c;…

在芯片设计行业,从项目的初期到交付,不同的岗位的工程师主要负责什么?

大家都知道在芯片设计行业&#xff0c;项目是至关重要的一环。从项目的初期到交付&#xff0c;不同的岗位的工程师在项目的各环节主要负责什么?他们是怎样配合的?下面看看资深工程师怎么说。 一个项目&#xff0c;从初期到交付的过程是比较漫长的。我们知道最早的时候&#…

OCR之论文笔记TrOCR

文章目录TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models一. 简介二. TrOCR2.1. Encoder2.2 Decoder2.3 Model Initialiaztion2.4 Task Pipeline2.5 Pre-training2.6 Fine-tuning2.7 Data Augmentation三. 实验3.1 Data3.2 Settings3.2 Resul…

MATLAB | R2023a更新了哪些好玩的东西

R2023a来啦&#xff01;&#xff01;废话不多说看看新版本有啥有趣的玩意和好玩的特性叭&#xff01;&#xff01;把绘图放最前面叭&#xff0c;有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦&#xff01;&#xff01; x -10:0.25:10; y x.^…

LAMP架构之zabbix监控(2):zabbix基础操作

目录 一、zabbix监控节点添加和删除 &#xff08;1&#xff09;手动添加 &#xff08;2&#xff09;自动添加 &#xff08;3&#xff09;按照条件批量添加 &#xff08;4&#xff09;使用api工具进行管理 二、针对应用的zabbix监控 一、zabbix监控节点添加和删除 实验说明&a…