热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

UI设计又称界面设计,是指对软件的人机交互、操

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 &#61; GetComponent<Button>();TestBtn.onClick.AddListener(OnClickTest);}public void OnClickTest(){Debug.Log("点击了按钮");}
}

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

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

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("关闭");}}
}

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

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

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

6&#xff1a;Slider
Slider是一个滑动条组件&#xff0c;一般用来制作血条或者进度条

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

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 &#61; 0;m_Text.text &#61; "";}void Update(){if (m_Slider.value < 100){m_Slider.value &#43;&#61; Time.deltaTime;//将value的取小数点两位m_Text.text &#61; m_Slider.value.ToString(("F")) &#43; "%";}}
}

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

8&#xff1a;Dropdown
下拉菜单&#xff0c;可用于快速创建大量选择项、创建下拉菜单模板等

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 &#61; new Dropdown.OptionData();data.text &#61; "第一章";Dropdown.OptionData data2 &#61; new Dropdown.OptionData();data2.text &#61; "第二章";m_Dropdown.options.Add(data);m_Dropdown.options.Add(data2);//第二种添加下拉选项的方案List<Dropdown.OptionData> listOptions &#61; 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&#xff1a;InputField
InputField组件是输入框组件&#xff0c;是一个用来管理输入的组件&#xff0c;通常用来输入用户的账号&#xff0c;密码或者再聊天室输入文字等等

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

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 &#61; "账号&#xff1a;" &#43; m_InputFieldName.text &#43; " 密码&#xff1a;" &#43; m_InputFieldPwd.text;}
}

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


推荐阅读
  • 标题: ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
author-avatar
六月__的__旅行
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有