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);
}

<<:  [Day13] - 利用 Button 范例 - 解说 render 函式

>>:  JS 题:将变数宣告在全域环境是否为好习惯?

Day 29 不停的探索新知

如果你能鼓舞别人拥有更多的梦想、学习更多、行动更多及改变更多,你就是一位领导者。 《iT邦帮忙铁人...

Day07 - this&Object Prototypes Ch3 Objects - Contents - Immutability

今天看 Immutability(不可变),作者提供适用於不同情境的四种方法,将物件设定为不可更变的...

系统分析师的养成之路—观察篇

大家好!为了将我自己在系统分析师养成的道路上经历过的种种事情传承给後进,我会自今日起不定时发表文章在...

VM 执行个体 (一)

GCE 如何在GCP上建立,如同以往机房建立Server的实体VM,在GCP上提供了三种方式,其中最...

Day 21 - 嵌入 AlexeyAB/darknet 的 Python

Day 21 - 嵌入 AlexeyAB/darknet 的 Python 如同先前的 Joseph...