# UGUI

所有的游戏都有它自己的UI。UI可以用来显示玩家昵称、等级、经验、金币、背包以及操作界面等,很多游戏接近一半的工作量都在UI上面。Unity中使用的UI多使用IMGUI、UGUI、NGUI、FairyGUI、New UIWidgets等来做。本文简单介绍UGUI。

# 一、UI基础

# 1.1 Image

image-20230703160833887

我们创建好了一个Image之后,如果场景冲不存在Canvas以及EventSystem节点,那么将会创建一个。而新建的Image会在这个Canvas下面。如果新建Image时候,鼠标选中了场景中的其它物体,那么这个Image就会创建在选中的节点下面。

image-20230703162117161

可以看到,直接创建的这个Image,它没有指定图片资源,因此只显示为了纯白色方格。如果想要通过它显示指定的图片,那么就需要要放置的图片进行一定的设置。

把图片导入项目中,在Project面板中选中图片,并在检视面板中,修改它的Texture Type为 Sprite(2D and UI)。Image类型的图片源实际上是Sprite,即精灵图片。它可以和图集一起使用,对UI起到一定的管理和优化作用。

然后再场景选中刚才添加的Image游戏对象,在它的检视面板中Image属性中,给它指定SourceImage为我们刚刚在Project中添加并设置好的那个图片即可,预览效果如下。

image-20230703181525133

# 1.2 RawTexture

选中场景中的Canvas节点,右键>>UI>>Raw Image,就可以创建一个RawImage组件在场景中。我们导入一张图片raw.png到项目中,无需修改它的导入设置。然后修改这个RawImage的大小为500x500,并把刚刚导入的图片绑定到RawImage的Texture属性上。预览效果如下:

image-20230703183540559

一般小的素材使用Image,比如按钮背景图、装备icon、头像等。像一些大面积的UI如果需要一张比较大的背景图,则比较适合使用RawImage。

# 二、按钮

首先在Canvas下创建一个按钮:

image-20230703184734255

创建好的按钮上,绑定了又Image组件,用来显示按钮背景图案,Button组件用来接收按钮事件等。按钮下面又有一个子节点,绑定了text组件,用来显示文字。

image-20230703185017069

创建一个脚本并绑定到当前Button上面,实现当点击了按钮后打印Log,脚本内容如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ButtonClick : MonoBehaviour
{
    Button bt;
    // Start is called before the first frame update
    void Start()
    {
        bt = GetComponent<Button>();

        bt.onClick.AddListener(onClick);
    }

    private void onClick() {
        Debug.Log("Clicked button");
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

# 三、文本Text

在Canvas上右键,新建一个Text组件。建好以后,它默认显示内容为New Text。在场景中选中它,可以在它的检视面板中修改它的文本内容,以及字体、颜色、大小、对齐方式、溢出处理方式、材质、遮罩等。

image-20230704202443877

如下脚本演示了当我们按下按钮R时候,动态修改Text组件文本内容的值并显示在屏幕上。这个脚本绑定到想要修改的Text组件上面,并运行,然后按下R键即可。

# 四、文本输入框

# 五、单选框

# 六、下拉列表框