Unity控制UI的显示与隐藏

Unity控制UI的显示与隐藏

本篇将使用c#中类的属性来对游戏中的多组UI组件进行控制,相较于零散无规则的UI代码,使用属性可以很好的方便开发者封装自己的控制方法以及管理复杂的UI。

下面展示一个通过点击事件来控制UI的示例来演示如何使用属性。

(一)为了方便演示,先选取2D视角,然后创建根节点Canvas,命名为Menu,在Menu下创建需要显示的子UI,这里我创建三个不同颜色的image来作为不同的UI界面,分别命名RedUI,BlueUI,GreenUI,最后创建对应控制的button,01按钮显示红色,02显示蓝色,03显示绿色,场景中只能存在一个UI。(实际制作游戏时的UI会更复杂,如何控制的逻辑也会更多,但与本方法原理相同,这里为了方便演示所以UI布局比较简单)
在这里插入图片描述

ps:创建好UI后通过组件面板的勾选将三个颜色的UI隐藏,留下一个只有按钮的场景,我们尽量不依赖外部选项的显示控制,在游戏启动前将UI都隐藏掉,一切通过代码来控制。
在这里插入图片描述
(二)创建脚本,命名UIManager,开始编写我们的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UIManager : MonoBehaviour
{
    //定义三个GameObject类用来表示三个UI界面
    public GameObject UIRed;
    public GameObject UIBlue;
    public GameObject UIGreen;
    void Start()
    {
		Status = UIStatus.Red;//在start方法中给属性赋值Red,让游戏一开始就显示红色UI界面
    }
    void Update()
    {

    }
    public enum UIStatus//定义枚举,列举UI显示的三种情况
    {
        Red,
        Blue,
        Green
    }
    private UIStatus uistatus;//创建枚举变量
    private UIStatus Status//定义属性给枚举变量赋值
    {
        get
        {
            return uistatus;
        }
        set
        {
            uistatus = value;
            UpdateUI();//在给枚举变量赋值后调用UI显示方法,控制UI的显示
        }

    }
    public void UpdateUI()//定义UI显示的方法,通过枚举变量的值来判断
    {
        UIRed.SetActive(uistatus==UIStatus.Red);
        UIBlue.SetActive(uistatus == UIStatus.Blue);
        UIGreen.SetActive(uistatus == UIStatus.Green);
    }
    public void Red()//显示红色UI的方法
    {
        Status = UIStatus.Red;//给属性Status赋值,赋值的同时调用了UpdateUI方法
    }
    public void Blue()//显示蓝色UI的方法
    {
        Status = UIStatus.Blue;
    }
    public void Green()//显示绿色UI的方法
    {
        Status = UIStatus.Green;
    }
}

(三)我们将脚本拖拽给Menu,然后将对应的子UI拖进脚本中。
在这里插入图片描述
(四)最后我们对三个按钮添加点击事件,将Menu拖给他们,并选择对应的显示方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(五)运行项目,查看效果:
在这里插入图片描述

(六)总结:属性可以用来有效地管理类中各项值的变化,反映到游戏中就是图片,积分,物体行为等,实际运用中不仅只用于UI的变化,可以控制许多场景内物体的变化。


版权声明:本文为qq_43269758原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。