unity实现按下按钮控制多个界面

先看看效果图

unity实现按下按钮控制多个界面

1使用检索值来实现

首先需要将你想要显示的面板放入一个数组里面,这个数组里面的值都是当你触发时才会显示的,

事例中我们创建了3个 button进行演示

unity实现按下按钮控制多个界面




紧接着创建3个image当做我们的面板他们只有颜色不同

unity实现按下按钮控制多个界面

好了界面都做好了接下来就开始写代码了

创建一个C#脚本 命名为Test (这里测试随便命名的)

 

  1. usingSystem.Collections;
  2. usingSystem.Collections.Generic;
  3. usingUnityEngine;
  4.  
  5. public class Test : MonoBehaviour {
  6.  
  7.    //这里存放所有你想要显示的面板
  8.    public GameObject[] panels;
  9.    //当前显示面板的索引值  如果为-1则是关闭所有面板
  10.    public int current_Index;
  11.    //是否切换了面板  如果你点击了按钮那就是要切换,没有点击就是不切换
  12.    //默认值为false
  13.    public bool isChange = false;
  14.  
  15.  
  16.    //这个函数就是这个代码的核心控制 在updata中每帧执行
  17.    publicvoid Display()
  18.    {
  19.        //如果切换了才执行,没有切换就不执行直接return就可以结束函数的运行
  20.        if(!isChange)
  21.        {
  22.             return;
  23.        }
  24.        //切换完了就把它的值 = false  这样你点击按钮只会触发一次
  25.        isChange = false;
  26.        //首先关闭所有显示的面板 这里使用foreach循环遍历所有的面板
  27.        foreach(GameObject i in panels)
  28.        {
  29.             //关闭显示
  30.             i.SetActive(false);
  31.        }
  32.        //这里处理current_Index为-1的情况  为-1就不在显示面板了直接return结束;
  33.        if(current_Index == -1)
  34.        {
  35.             return;
  36.        }
  37.        //打开当前面板
  38.        panels[current_Index].SetActive(true);
  39.    }
  40.  
  41.    //当按钮点击的时候调用这个方法就行了 
  42.    public void SelectPanel(int index)
  43.    {
  44.        isChange = true;
  45.        current_Index = index;
  46.    }
  47.  
  48.     // Use this for initialization
  49.     void Start () {
  50.        
  51.     }
  52.    
  53.     // Update is called once per frame
  54.     void Update () {
  55.        Display();
  56.     }
  57. }

好的代码写完了

我们把代码放到Canvas上面进行设置

unity实现按下按钮控制多个界面

接下来进行的是按钮的OnClick事件添加的问题


点击按钮在OnClick中添加Canvas上Test中的 SelectPanel函数

按钮1

unity实现按下按钮控制多个界面

按钮2

unity实现按下按钮控制多个界面

按钮3

unity实现按下按钮控制多个界面

最后我们在创建一个Close按钮来关闭所有面板  为他添加OnClick事件

unity实现按下按钮控制多个界面

unity实现按下按钮控制多个界面

到这里就结束了