1. 程式人生 > >unity實現按下按鈕控制多個介面

unity實現按下按鈕控制多個介面

先看看效果圖


1使用檢索值來實現

首先需要將你想要顯示的面板放入一個數組裡面,這個數組裡面的值都是當你觸發時才會顯示的,

事例中我們建立了3個 button進行演示


緊接著建立3個image當做我們的面板他們只有顏色不同


好了介面都做好了接下來就開始寫程式碼了

建立一個C#指令碼 命名為Test (這裡測試隨便命名的)

  1. usingSystem.Collections;
  2. usingSystem.Collections.Generic;
  3. usingUnityEngine;
  4. public class Test : MonoBehaviour {
  5.    //這裡存放所有你想要顯示的面板
  6.    public GameObject[] panels;
  7.    //當前顯示面板的索引值  如果為-1則是關閉所有面板
  8.    public int current_Index;
  9.    //是否切換了面板  如果你點選了按鈕那就是要切換,沒有點選就是不切換
  10.    //預設值為false
  11.    public bool isChange = false;
  12.    //這個函式就是這個程式碼的核心控制 在updata中每幀執行
  13.    publicvoid Display()
  14.    {
  15.        //如果切換了才執行,沒有切換就不執行直接return就可以結束函式的執行
  16.        if(!isChange)
  17.        {
  18.             return;
  19.        }
  20.        //切換完了就把它的值 = false 
    這樣你點選按鈕只會觸發一次
  21.        isChange = false;
  22.        //首先關閉所有顯示的面板 這裡使用foreach迴圈遍歷所有的面板
  23.        foreach(GameObject i in panels)
  24.        {
  25.             //關閉顯示
  26.             i.SetActive(false);
  27.        }
  28.        //這裡處理current_Index為-1的情況  為-1就不在顯示面板了直接return結束;
  29.        if(current_Index == -1)
  30.        {
  31.             return;
  32.        }
  33.        //
    開啟當前面板
  34.        panels[current_Index].SetActive(true);
  35.    }
  36.    //當按鈕點選的時候呼叫這個方法就行了 
  37.    public void SelectPanel(int index)
  38.    {
  39.        isChange = true;
  40.        current_Index = index;
  41.    }
  42.     // Use this for initialization
  43.     void Start () {
  44.     }
  45.     // Update is called once per frame
  46.     void Update () {
  47.        Display();
  48.     }
  49. }

好的程式碼寫完了

我們把程式碼放到Canvas上面進行設定


接下來進行的是按鈕的OnClick事件新增的問題

點選按鈕在OnClick中新增Canvas上Test中的 SelectPanel函式

按鈕1


按鈕2


按鈕3


最後我們在建立一個Close按鈕來關閉所有面板  為他新增OnClick事件



到這裡就結束了