iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
自我挑戰組

用unity製作2DRPG雛形-沒有大野狼的小紅帽系列 第 17

17.unity顯示/隱藏物件(SetActive)

想要製作一個假背包,利用按鈕顯示背包,再按下按鈕關閉背包。

要使用GameObject.SetActive來實踐背包開闔。

SetActive定義(參閱unity手冊)

public void SetActive(bool value);

1.每個物件(GameObject)都有一個是否顯示(SetActive)的狀態。
2.是否顯示OnEnable or OnDisable為布林值,true會顯示(OnEnable),false則會隱藏(OnDisable)。
3.父物件的狀態優先於子物件。
4.OnDisable時,會停止使用所有該物件元件(GameObject Component)。
※GameObject Component, including attached renderers, colliders, rigidbodies, and scripts.

將此腳本掛在該物體上的錯誤用法

這個寫法將腳本掛載在作用物件之下,所以直接寫GameObject.,但事實上這個腳本只能在true的時候使用一次,將物件關閉設定為false。之後因為在false狀態下,會停止使用該物件元件,所以腳本會失去效用。

void Update(){
		if(事件1){
			GameObject.SetActive(true);
		}
		if(事件2){
			GameObject.SetActive(false);
		}
}

實際用法

1.基本用法

//先在變數端宣告要SetActive的物件
public GameObject BagPanel;

//初始化時先設定成關閉
void Start(){
		BagPanel.SetActive(false);
}

//按下a鍵開啟物件
void Update(){
		if(Input.GetKey("a")){
				BagPanel.SetActive(true);
		}
}

2.物件顯示狀態(activeSelf定義,參閱GameObject.activeSelf)

public bool activeSelf;

同一個按鈕實現開關

//先在變數端宣告要SetActive的物件,
public GameObject BagPanel;

//初始化時先設定成關閉
void Start(){
		BagPanel.SetActive(false);
}

//每按一下就將bool設定成相反的
public void OnClick ()
{
		BagPanel.SetActive(!BagPanel.activeSelf);
}

上一篇
16.unity介面按鈕
下一篇
18.unity實例化(上)(Instantiate)
系列文
用unity製作2DRPG雛形-沒有大野狼的小紅帽30

尚未有邦友留言

立即登入留言