超详细的Unity UGUI教学

前言:Unity版本为2019.2.9f1 Ppersonal。Unity版本可在上方Help下点击About Unity找到。本文介绍了Unity游戏开发中常见的UI实现方法,是你学习Unity UGUI的不二之选,超级详细绝对干货!还可通过目录快速跳转到你想看的内容哦。看完觉得有帮助的小可爱,还请动动小手点个赞让更多人看到哦~~~

常用操作

Scene设置

开发UGUI时,常选择ISO模型,即2D平面开发,然后右上角锁定界面防止镜头发生偏移,如图所示。
在这里插入图片描述

快捷键

点击图片后按T可以进入Rect Tool编辑,如图所示。
在这里插入图片描述
其中四个角的实心点为拉伸点,中心空心点为pivot点,即自身坐标中心点。点击实心点后可以拖动,从而对图片进行自由拉伸;实心点间的连线也可以拖动,但是沿着连线垂直方向进行拉伸。按住中间区域可以拖动图片。

点击图片的拉伸点时,同时按住一些键可以实现不同的拉伸效果。

  • 按住Shift键可以实现等比例拉伸,即图片长宽比保持不变。
  • 按住Alt键可以实现对称拉伸,即往某个方向拉伸多少,在其以图片中心为对称点的另一个方向也会拉伸多少。
  • 同时按住Shift和Alt键可以实现固定中心点的等比对称拉伸。

Rect Transform组件参数

在UGUI中,每一个UI控件都拥有自己的矩形区域。Rect Transform是UI控件独有的组件,它记录了UI控件的矩形区域在画布上的各种坐标信息,其参数如下。

  • Pos X、Y、Z:图片的pivot,即矩形区域的中心点相对于锚点的坐标。要注意的是,锚点是父物体矩形的锚点而不是Canvas的锚点。
  • Width、Height:矩形区域的长和宽,单位为像素。
  • Anchors
    • min X、Y:固定在父物体矩形左下角的归一化位置。
    • max X、Y:
  • Pivot:自身矩形区域的中心点在归一化后的数值。pivot点一般在原点,矩形区域的旋转和比例都是围绕pivot点计算的。
  • Rotation和Scale就不讲述了。

图片Image

在Hierarchy面板下右键,新建一个Image。
在这里插入图片描述
如下图所示,Unity会自动为你创建一个画布Canvas和Image图片,其在Game窗口的预览效果如下图空白方块所示。这里要提一点的是,所有的UI控件都必须放在Canvas下,否则在Scene窗口和Game窗口都无法看到,相当于是被隐藏起来了。
在这里插入图片描述 在这里插入图片描述
点击Image,如图为Image的Inspector面板,RectTransform组件就不做过多介绍了。
在这里插入图片描述
Image组件就使得该对象拥有Image的属性,即它为一个图片。

Image参数

Image的属性如下。
在这里插入图片描述
随便导入一张精灵图Sprite后会变成如图的样子。
在这里插入图片描述
在这里插入图片描述

  • Source Image:源图片。可以选择各种形式的图片放入,也可以选择精灵图Sprite。
  • Color:设置Image的颜色。
  • Material:设置Image的材质。比如你想让图片具有金属的光泽,拖入金属材质就好。
  • Raycast Target:是否作为射线检测的目标。有的UI是放置在游戏物体上而不是渲染到整个屏幕空间上的。因此如果你希望该Image可以给射线检测到,就勾选此选项。
  • Image Type:默认为Simple。后面两个属性都是Simple下的属性,这一部分放到下一小节介绍。
  • Use Sprite Mesh:是否使用精灵图网格。
  • Preserve Aspect:是否保持图片比例。勾选的话,在缩放图片时,图片的长宽比例是保持不变的,如下图所示。
    在这里插入图片描述 在这里插入图片描述
  • Set Native Size:将图片恢复到原始大小。

Image Type图片类型

在这里插入图片描述

  • Simple表示最简单不作任何处理的图片类型。
  • Sliced表示图片为切片类型。点击Source Image,定位到图片的源位置,不必和我使用同样的精灵图,如图所示。
    在这里插入图片描述
    点击Slot2->Sprite Editor,如图所示。 在这里插入图片描述
    进入了如图的精灵图编辑界面后,点击中间的精灵图,仔细看可以发现围绕在精灵图周围的四条,中间有个绿色点的绿色边框。
    在这里插入图片描述
    将上下左右的绿色边框往精灵图中间拖动,可以发现这四条线将整个精灵图切割成了九个部分。这便是Sliced图片类型的来源,即切片类型。这个切片的意义在于,对精灵图进行了切片后,对图片进行的拉伸不会影响到1、2、3、4这四个角落的部分;5、7(左右)两个部分仅进行上下拉伸;6、8(上下)两个部分仅进行左右拉伸;而9这个中间部分会上下左右都拉伸。Sliced类型常用于需要保持图片边框不变的场景,或是防止图片放大后的角落失真(因为角落不会被影响)。
    在这里插入图片描述
    点击右上角的Apply应用并保存后,回到Scene面板,将图片的Image Type改为Sliced。拖住图片的右下角进行拉伸,可以发现图片的边框就不再变化了。
    在这里插入图片描述
  • Tiled表示图片为平铺类型。图片在被拉伸后,精灵图会以原始大小填充拉伸后的区域,如图所示。
    在这里插入图片描述
    注意要让图片为平铺类型的话,就一定要先确保其没有被切片过,否则会导致平铺效果很奇怪。取消切片的方法是回到Sprite Editor,将右下角的Border边界值全部设为0,如图所示。
    在这里插入图片描述
  • 最后一个图片类型是Filled,即为填充类型。该类型将放在后面讲滑块时介绍。

按钮Button

创建Button

在Hierarchy面板下右键,新建一个Button。
在这里插入图片描述
如下图所示,Unity会自动为你创建一个画布Canvas和Button按钮,其在Game窗口的预览效果如下图所示。Button中设置的是按钮的属性,而Button下的Text设置的是Button上的文本。
在这里插入图片描述
在这里插入图片描述
点击Button,如图为Button的Inspector面板,可以看见,Button上还挂载了一个Image组件。说明Button其实是一个Image,但是其上有Button组件,因此具备了按钮的属性,可以被点击。因此创建Button还有另外一种方式:创建一个Image,然后为其添加Button组件即可。
在这里插入图片描述

Button 参数

要注意,所有效果都必须是游戏运行时才会生效。
在这里插入图片描述

  • Interactable :是否可以交互。取消勾选后Button就不能点击了,设置颜色也不会生效。
  • Transition :Button的过渡效果。是一个单选框,参数依次为无、着色过渡、精灵图调换过渡、动画过渡。
    在这里插入图片描述
  • Target Graphic:该组件的作用对象。UI控件实现效果的对象。
  • Normal Color:正常颜色。鼠标不在Button上时的颜色。
  • Highlighted Color:高亮颜色。鼠标在Button上时的颜色。
  • Pressed Color:按压颜色。鼠标点击Button时的颜色,松开后恢复。
  • Selected Color:被选颜色。鼠标点击Button时的颜色,松开后保持不变,除非点击Button外的界面。
  • Disabled Color:禁用颜色。禁用Button(Script)后的颜色。
  • Color Multiplier:颜色倍数。
  • Navigation :控件间导航。这个不用太了解。
  • Visualize:是否可视。点击后在Scene中显示出每个UI控件之间的顺序。
  • On Click() :给按钮添加响应事件。
  • Fade Duration:淡入淡出时间。

为Button添加点击事件

接下来讲一讲如何添加Button点击事件。
首先在Hierarchy面板中创建一个空物体GameObject,然后在Project面板下创建一个新的C#脚本,命名为OnClickButton。将OnClickButton添加到GameObject上。
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
双击OnClickButton脚本,输入以下代码。该代码的作用是,点击按钮后,输出"You click the button.“和_printCount次"Yes”。

using UnityEngine;

public class OnClickButton : MonoBehaviour
{
	public void Click(int _printCount)
    {
        print("You click the button.");
        for (int i = 0; i < _printCount; ++i)
        {
            print("Yes!");
        }
    }
}

脚本创建好后,返回到Unity界面。在Button的Inspector面板最下方找到On Click(),点击右下角的加号,将GameObject拖入作为引用。然后就可以点击右边的No Function -> OnClickButton -> Click(int),从而将该方法作为为Button按下后调用的方法。
在这里插入图片描述在这里插入图片描述
选定方法后,就可以为方法设定传入的参数,这里要注意的是,Button按钮只能触发只含一个参数的方法,参数多了就无法指定参数了。将传入的参数设定为5,如图所示。
在这里插入图片描述
最后,运行游戏,点击Button,即可在Console面板看到"Yes"被打印了5次。
在这里插入图片描述

OnClick参数

在这里插入图片描述
首先是第一栏,点击后有个下拉框。Off表示该方法在按钮点击时不调用;Editor And Runtime表示即使没运行游戏时,点击Game窗口下的Button也会调用该方法;Runtime Ony就是前面介绍的实例一样,仅仅在Game运行时点击Button才会调用该方法。
在这里插入图片描述
No Function点击后也会出现多个选项。这些选项是该Button上的一些可以通过Button调用的方法,注意,如果想调用自定义的方法,必须声明为public,否则在Button是获取不到的。如果添加两次GameObject会怎样呢?如图所示。
在这里插入图片描述
在运行后,点击Button,会调用两次Click方法,如图所示,输出了10次"Yes"。
在这里插入图片描述

开关Toggle

实例创建

用一个如图所示的开关实例来讲解Toggle。
在这里插入图片描述

布局编辑

新建一个Image,命名为Background_1,将其拉伸到如图大小,设置透明度为100。同时新建一个小Image,命名为Toggle_1,设置透明度为100。调整两个窗口的位置,在Toggle下新建一个Text,调整一下大小,文本输入为Toggle1。
在这里插入图片描述
在这里插入图片描述

开关实现

为Toggle_1添加Toggle组件,如图所示,将Background_1拖到Graphic上,不要管下面的Toggle_3是什么。
在这里插入图片描述
点击Play运行游戏,点击Game窗口下的Toggle1可以发现Background_1消失不见,再次点击又会出现,这就是开关的效果。
在这里插入图片描述

开关组的实现

复制一个Toggle_1和Background_1,分别重命名为Toggle_2和Background_2。将Toggle_2的Toggle组件上的Graphic引用换为Background_2,同时将其下Text改为Toggle2。调整一下位置如图所示。
在这里插入图片描述
复制Toggle_1,改名为Toggle_3,去掉其上的Toggle组件,添加一个Toggle_3组件。同时选定Toggle_1和Toggle_2,将Toggle_3拖到它们Toggle组件的Group引用上,调整一下Toggle_3的位置如图所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时再观察Scene和Game界面会发现,两个背景只有一个在显示。点击Play运行游戏,分别点击Toggle1和Toggle2,可以发现,当我们点击其中任意一个时,另外一个背景也消失了。这就是开关组的效果。

Toggle参数

Toggle常用于实现开关控制,或者界面的切换。

创建Toggle后在Hierarchy面板可以看到如图层级结构。其中Background是开关的背景图,Checkmark是被控制的图片,在Unity中默认为一个小对勾,Label则是开关名字。Toggle的本质是背景Image和受控Image,只不过其上添加了Toggle组件,从而使其拥有开关的属性,这也是开关的创建方式之一。
在这里插入图片描述
以前面实例中的Toggle_1为例,如图为Toggle组件的参数。
在这里插入图片描述
在Button中介绍过的参数就不过多介绍了。

  • Is On:游戏开始时开关是否开启。不勾选时,开关是关闭的。要注意的是,Toggle使受控对象消失并不是通过SetActive,具体是怎么实现的我暂时还不太清楚,知道后会来补更新。
  • Toggle Transition:开关的转换效果。None为无,即直接打开或关闭;Fade为淡入淡出,有一个过渡过程。
  • Graphic:受控制的对象。可以是任意GameObject。
  • Group:组。该开关所归属的组。
  • On Value Changed(Boolean):类似于Button中的On Click,在这里添加事件,可以使得开关被点击的同时触发一些事件。

不过不同于Button的是,Toggle能触发的事件只有布尔值的改变。比如将Toggle3拖入Toggle的 On Value Changed(Boolean)中(先将Toggle1和Toggle的组解引用,即设为None)选择方法为GameObject->SetActive,运行游戏就能发现,点击Toggle1,Toggle3也会跟着消失,如图所示。
在这里插入图片描述
而在Hierarchy面板中,Toggle3已经被禁用了。
在这里插入图片描述 在这里插入图片描述
由此可见On Value Changed(Boolean)会改变列表中的对象的值。

开关组Toggle Group参数

开关组的作用在于实现数个开关的集中管控,如图是开关组的Inspector面板参数。
在这里插入图片描述
开关组内的开关,同一时间只能有一个打开;当勾选上Allow Switch Off时,同一时间运行所有开关都是关闭的,不勾选则至少保留一个开关是开启的(表现为,重复点击唯一 一个已经开启的开关,开关控制的对象不会消失)。开关组经常用于实现比如同一窗口下多个界面的切换的效果,比如背包栏的分类,不同的属性界面。

滑动器Slider

实例创建

用一个如图所示的血条实例和技能CD实例来讲解Slider。
在这里插入图片描述

布局编辑 & 实现

这个布局非常的简单,首先是血条的效果。新建一个Image,命名为Bloodbar_Background,然后在其下新建子Image,命名为Filled,然后将Filled的Color改为红色即可。两个物体都不需要为添加图片,用None就好。为Bloodbar_Background添加Slider组件,然后将Filled拖过去称为Fill Rect的引用。如图所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击Play运行游戏,然后点击血条的不同区域,就可以发现血条会跟着你点击的位置跑,同时,左右拖动鼠标,血条也会跟着移动。
在这里插入图片描述 在这里插入图片描述

接下来实现技能CD的效果。新建Image,随便添加一张什么方形图片,命名为为Skill_Background。同样的,在其下新建子Image,命名为Filled,同样可以随便添加一张方形图片。然后将它的颜色改为全黑,透明度改为100,差不多有那种技能处于CD(阴影)无法使用的感觉就好了,如图所示。
在这里插入图片描述
这种效果不需要用Slider,只需要将Filled的Image Type改为Filled即可,这也是为什么它既然要作为阴影,仍然需要添加Source Image的原因,因为只有Image可以实现为Filled。改为Filled之后,可以拖动下面的Fill Amount来观察阴影的旋转效果。如图所示。
在这里插入图片描述
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Slider参数

同所有的UI控件一样,Slider本质还是一个Image,只不过其上有个Slider组件而已。别看在Hierarchy面板下新建一个Slider,下面会有很多不认识的东西。实际上真正起作用的只有Slider,Fill以及Handle。而它们三个都只是Image,只不过Slider有着Slider组件,Fll是用于填充的对象,Handle是用于拖动的滑块,类似于推动器。
在这里插入图片描述
Slider组件面板如图所示。
在这里插入图片描述
在Button中介绍过的参数就不过多介绍了。

  • Fill Rect & Handle Rect:前面讲了,不过多介绍了。
  • Direction:滑动方向。见名知意,不过多介绍。
  • Min Value & Max Value:最小值和最大值。最小值最大值有助于数字化滑动的效果,比如血条的实现,就可以设置为最小值0,最大值100。
  • Whole Numbers:完整数字移动。勾选该项后,滑动器只会按照整数值的增加或减少,表现出来滑动时也是固定的面积或距离滑动。不会出现诸如0.5、5.2这种浮点值。为什么设置这个呢?想想使用能量条的英雄,他们的体力值就是整数的减少和增加。
  • Value:数值。这个就不用介绍了吧,自己调整一下就明白了。
  • On Value Changed(Single):暂不清楚。

Image Type的Filled参数

在这里插入图片描述
在Image中介绍过的参数就不过多介绍了。

由于参数会根据Fill Method改变,所以逐个介绍。
在这里插入图片描述

  • Horizontal:水平方向填充。
  • Fill Origin:起始位置。Left表示从左往右填充,Right则相反。
  • Fill Amount:填充数,类似于Slider中的Value。0位无填充,1为全填充。
    在这里插入图片描述
  • Vertiacl:垂直方向填充。
    • Fill Origin:起始位置。Top表示从上往下填充,Bottom则相反。
      在这里插入图片描述
  • Radial 90:90度辐射填充。
  • Fill Origin:起始位置。比如Bottom Left-左下角,Bottom Right-右下角,Top Left-左上角,Top Right-右上角。
  • Clockwise:勾选后填充方向为顺时针。
    由此可知,Radial 90的填充方式,是以Fill Origin为圆心,顺时针(勾选Clockwise)或逆时针(不勾选Clockwise)方向扫描过去的填充。
    在这里插入图片描述
  • Radial 180:180度辐射填充。
    跟Radial 90的唯一区别在于Fill Origin,此时的圆心分别在各边的中心。
    在这里插入图片描述
  • Radial 360:360度辐射填充。
    圆心在图片的中心,也就是本小节技能CD效果的设置。

滚动条Scrollbar

实例创建

用一个如图所示的公告实例来讲解Scrollbar。
在这里插入图片描述

布局编辑

新建一个Image,命名为Note,代表公告。在其下新建两个Image,分别命名为Title和Content,分别代表着公告标题和公告内容。将它们的Color值都设置为(255, 255, 255, 20),稍微不透明即可。稍微调整一下大小后得到如图所示的效果。
在这里插入图片描述
游戏内的效果如图所示。
在这里插入图片描述
然后在Title下新建文本对象Text,文本内容输入"Note",字号颜色什么的自己都无关,自己调整即可。然后在Content下新建文本对象Text,这才是公告真正放置内容的地方。给Content的Text加入文本内容,多输入几行就好了。添加后的效果如图所示。
在这里插入图片描述

滚动条实现

首先为Content添加Mask组件,该组件可以掩盖住超出Content区域的内容,所以在下方的字母就不显示了。而Show Mask Graphic勾选后,会显示Mask组件添加的对象,取消勾选后在Game下就看不到对象区域了。
在这里插入图片描述
添加Mask后的效果如图所示,可以看到下方的字母都被掩盖住了。
在这里插入图片描述
然后在Note下新建一个滚动条Scrollbar,将其Direction参数改为Bottom To Top,Size改为0.5。同时,为Content添加组件Scroll Rect组件,然后将Content下的Text以及Scrollbar拖拽过来作为引用,如图所示
在这里插入图片描述
从而便实现了公告滚动阅读的效果。

ScrollBar参数

创建ScrollBar后在Hierarchy面板可以看到如图层级结构。其中ScrollBar是滚动条的背景框,Handle是滑块。
在这里插入图片描述
在这里插入图片描述
在Button中介绍过的参数就不过多介绍了。

  • Handle Rect:滚动器的矩形坐标。指定滚动条。
  • Direction:这个很有意思。要理解这里面的方向,都是指你向上滑动鼠标滚轮时,滚动条的移动方向。比如实现公告、网页等的滚动条向下移动的效果,你应该选择Bottom To Top,这样当你向上滑动鼠标滚轮时,滚动条是上移的;反过来就会向下移了。
  • Value:值。可以根据方向判断,0的值永远在左边一个方向。比如你选择的是Bottom To Top,那么Value为0时滚动条处于Bottom。
  • Size:滚动条的长度。调整没用,它会根据你指定的滚动内容自动改变。
  • Number Of Steps:步数。具体不清楚,会回来更新的。

ScrollRect参数

ScrollRect(滚动框)组件的应用场景是:不需要用到滚动条,但需要实现滚动效果时。要注意的是,滚动条必须配合ScrollRect使用,真正实现滚动效果的是ScrollRect,ScrollBar只是实现一个条状的滚动图片而已。
在这里插入图片描述

  • Content:内容。指定一个需要实现滚动效果的对象。
  • Horizontal & Vertical:设置滚动方向,水平还是垂直。
  • Movement Type:滚动的类型。Unrestricted,无限制,滚动无边界限制;Elastic,有弹性,滚动到边界时,如果继续滚动,会在边界不断地“拉扯”;Clamped,限制边界,滚动到边界时不能够再进行滚动。
    在这里插入图片描述
  • Inertia:是否有惯性。勾选后,快速滚动突然停下时,仍然会滚动一小段距离。
  • Deceleration Rate:减速率。类似于减速加速度,越大惯性越小,因为滚动。
  • Viewport:还不太清楚。
  • Horizontal Scrollbar:指定一个水平滚动条。
  • Vertiacl Scrollbar:指定一个垂直滚动条。
  • Visibility:滚动条的可见度。Permanent,滚动条一直显示;Auto Hide,自动隐藏;Auto Hide And Expand Viewport,还不太清楚。
    在这里插入图片描述
  • On Value Changed(Vector2):以后再来更新。

看完觉得有帮助的小伙伴请点个赞收藏一下哦~~~

  • 69
    点赞
  • 314
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Unity UGUIUnity游戏开发中常用的用户界面实现方法。UGUIUnity自带的用户界面系统,可以通过创建UI元素来构建游戏的界面。在Unity中,UGUI可通过创建Button、Text、Image等UI组件来实现交互和展示。 在UGUI中,通常选择ISO模型进行2D平面开发。通过锁定界面可以防止镜头发生偏移,确保界面的稳定性。 添加Button点击事件的方法如下: 1. 在Hierarchy面板中创建一个空物体GameObject。 2. 在Project面板中创建一个新的C#脚本,命名为OnClickButton,并将该脚本添加到GameObject上。 3. 双击OnClickButton脚本,在打开的脚本编辑器中输入相应的代码。该代码的作用是在点击按钮后输出"You click the button."和若干次"Yes"。 4. 在Click方法中使用print函数输出相关信息,并通过循环打印"Yes"特定次数。 5. 完成脚本的编写后,将脚本保存并返回Unity编辑器界面。 以上是关于Unity UGUI的简要介绍和Button点击事件的添加方法。希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [详细Unity UGUI教学](https://blog.csdn.net/qq_37701948/article/details/106682377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值