![Unity3D平台AR与VR开发快速上手](https://wfqqreader-1252317822.image.myqcloud.com/cover/556/26943556/b_26943556.jpg)
上QQ阅读APP看书,第一时间看更新
3.7 Unity GUI
Unity GUI提供了常用的UI,包括按钮、文本、文本框、滚动条、下拉框等。点击菜单“GameObject”→“UI”,选择需要添加的具体内容即可,如图3-38所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0052-0078.jpg?sign=1738940478-D3EM7fUDcwqmnbGXjjmGWKKTqSjpg4xz-0-c0bac832393432618f0f3e19b9a3b906)
图3-38
Unity GUI所有对象都需要在“Canvas”为根结点的游戏对象下,并且需要一个“EventSystem”对象,如图3-39所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0053-0079.jpg?sign=1738940478-lE6Vs2n5kPaknWVJMGWY35Js5f5Ea4p3-0-abe82cc138230d00dd4b2730fb786514)
图3-39
3.7.1 Render Mode显示模式
Render Mode显示模式设置界面如图3-40所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0053-0080.jpg?sign=1738940478-PwmzCl39OMBO7fNUldq3aLl9oX78NIa3-0-5f08089c997b0d0010b878b5a07a9207)
图3-40
(1)Screen Space - Overlay
该模式下,UI会始终出现在3D物体的最前方,如图3-41所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0054-0081.jpg?sign=1738940478-2ntBgnOM8ME9MyYYakeykDybygdm42tV-0-71c8eee64e5381e3aac4fddb816916b9)
图3-41
(2)Screen Space - Camera
该模式下,UI会出现在距离相机一定位置的距离上,其中“Plane Distance”就是UI所在平面距离相机的位置,如图3-42所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0054-0082.jpg?sign=1738940478-UM20CizGhR4avEyL434IHgSB40fMLNDu-0-be8044f3a25c5ca9e2f92306b076f600)
图3-42
(3)World Space
该模式下,UI会变成一个场景中的平面对象,如图3-43所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0055-0083.jpg?sign=1738940478-lW94AXp0pyScnvLHJ2M9zXBOQaY8dvW2-0-affb7335ace00a5144c76e4a0f31c3eb)
图3-43
3.7.2 定位方式
(1)绝对定位
以父对象的某个点作为定位参考时,对象不会因为父对象的大小变化而改变,会始终保持大小不变,如图3-44所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0055-0084.jpg?sign=1738940478-YHRlCvnqcfKhUxrV0Ky1plTyf4GWOdcH-0-6656ca75f79f49bf6659b86271ac99e8)
图3-44
(2)相对定位
以父对象的某条线或区块为定位参考时,对象会因为父对象的大小变化而改变,如图3-45所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0056-0085.jpg?sign=1738940478-wPX3Fhsj7VPFDJUJZ8EOx22Mohs2IQbm-0-a59540b3b8d4878acac58247e6c85ffe)
图3-45
3.7.3 响应脚本
新建脚本:
using UnityEngine; using System.Collections; public class BtnClicked : MonoBehaviour { public void Clicked(){ Debug.Log ("按钮被按下"); } }
新建一个游戏对象,将脚本拖入,如图3-46所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0056-0086.jpg?sign=1738940478-8GhUXZ839UMcwQrLJL1Ij29Z8DxW9IHE-0-72bbf67b36fd7bbfaf6b83dbd63175a9)
图3-46
选中对应的UI,添加事件,如图3-47、图3-48所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0057-0087.jpg?sign=1738940478-rWB8twFQfOIRGB0Sw1M9NTCSReBgGG1t-0-a4b778f729cc10e5fee40d9127af8c40)
图3-47
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0057-0088.jpg?sign=1738940478-WOprQz7VKqheOWpFCHfYsQBLXQ2ZXPVf-0-ae785b0eab1b754e5c9158d606f293aa)
图3-48
将有脚本的游戏对象拖入事件中,并选择响应的方法,也就是之前写的方法,如图3-49所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0058-0089.jpg?sign=1738940478-H4GUyZxiWvOVVkKaODu2BOJTjIFXTDzB-0-5a437afd4da6f98979cda3d9b1edfe51)
图3-49
运行,按钮被点击时,就会有输出,如图3-50所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0058-0090.jpg?sign=1738940478-jpBwEYyfnCD6zqcOUuC1DJjFE4lwEkSX-0-5859632d4daa5bea6e403a031de3f88a)
图3-50
不同的UI组件只是响应的事件不同,添加响应脚本的方法是一样的,如图3-51所示。
![](https://epubservercos.yuewen.com/713F8C/15367246704195306/epubprivate/OEBPS/Images/Figure-0059-0091.jpg?sign=1738940478-910cHAgSma5Lzu9s5rM9tdynPYLMqxi2-0-9ee221f28a5e048feba9a6eac1b43a5c)
图3-51