按鈕架構
Picture

Node
※這是一個Inner Class
| 屬性型別 | 說明 |
|---|---|
| GameObject | 指向場景中該按鈕的GameObject |
| Node | 指向父節點 |
| List<Node> | 指向每個兄弟節點 |
| List<Node> | 指向每個子節點 |
| 方法 | 說明 |
|---|---|
| Node(string objName, Node father) | constructor;objName為GameObject名稱,father為父節點 |
| void rvSelfActive() / rvChildActive() / rvSiblingActive() | 改變自己/所有子節點/所有兄弟節點的可視狀態(參考GameObject.SetActive(bool)) |
| void addChild(menuNode child) / void addSibling(menuNode sibling) | 把child/sibling加入自己的child/sibling list |
Implement
| 屬性型別 | 說明 |
|---|---|
| Stack<Node> | 儲存被按過的按鈕,用來處理「返回上層」的情況(見方法:void previousClick()) |
| 方法 | 說明 |
|---|---|
| void menuClick(GameObject obj) | 傳入被按下的按鈕,將該按鈕、該按鈕的兄弟節點、該按鈕的子節點的可見狀態全部反轉(Ex. Menu 1被按下後,Menu 1、Menu 2消失;Menu 1-1、Menu 1-2出現)並將該按鈕push進stack中 |
| void previousClick() | 處理「返回」按鈕被按下的情況:從stack中pop出上一個被按下的按鈕,將其自身、兄弟節點及子節點的可見狀態全部反轉 |
DEMO
看影片比較清楚