unity实现按下按钮控制多个界面
先看看效果图
1使用检索值来实现
首先需要将你想要显示的面板放入一个数组里面,这个数组里面的值都是当你触发时才会显示的,
事例中我们创建了3个 button进行演示
紧接着创建3个image当做我们的面板他们只有颜色不同
好了界面都做好了接下来就开始写代码了
创建一个C#脚本 命名为Test (这里测试随便命名的)
- usingSystem.Collections;
- usingSystem.Collections.Generic;
- usingUnityEngine;
- public class Test : MonoBehaviour {
- //这里存放所有你想要显示的面板
- public GameObject[] panels;
- //当前显示面板的索引值 如果为-1则是关闭所有面板
- public int current_Index;
- //是否切换了面板 如果你点击了按钮那就是要切换,没有点击就是不切换
- //默认值为false
- public bool isChange = false;
- //这个函数就是这个代码的核心控制 在updata中每帧执行
- publicvoid Display()
- {
- //如果切换了才执行,没有切换就不执行直接return就可以结束函数的运行
- if(!isChange)
- {
- return;
- }
- //切换完了就把它的值 = false 这样你点击按钮只会触发一次
- isChange = false;
- //首先关闭所有显示的面板 这里使用foreach循环遍历所有的面板
- foreach(GameObject i in panels)
- {
- //关闭显示
- i.SetActive(false);
- }
- //这里处理current_Index为-1的情况 为-1就不在显示面板了直接return结束;
- if(current_Index == -1)
- {
- return;
- }
- //打开当前面板
- panels[current_Index].SetActive(true);
- }
- //当按钮点击的时候调用这个方法就行了
- public void SelectPanel(int index)
- {
- isChange = true;
- current_Index = index;
- }
- // Use this for initialization
- void Start () {
- }
- // Update is called once per frame
- void Update () {
- Display();
- }
- }
好的代码写完了
我们把代码放到Canvas上面进行设置
接下来进行的是按钮的OnClick事件添加的问题
点击按钮在OnClick中添加Canvas上Test中的 SelectPanel函数
按钮1
按钮2
按钮3
最后我们在创建一个Close按钮来关闭所有面板 为他添加OnClick事件
到这里就结束了