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的變化,可以控制許多場景內物體的變化,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237977.html
標籤:其他
