我在Unity5製作了一款2D遊戲,其中玩家有一把槍,這是玩家的小孩,當玩家被擊中時,我該如何銷燬槍?目前我使用的代碼會破壞玩家而不是槍支。父母被銷燬時如何銷燬子對象?
public float health=500f;
public GameObject gun;
void OnTriggerEnter2D(Collider2D collider){
BulletScript bullet = collider.gameObject.GetComponent<BulletScript>();
if (bullet) {
health -= bullet.getdamage();
bullet.hit();
Handheld.Vibrate();
if (health <= 0) {
GetComponent<Animator>().SetBool ("deadBool", true);
GetComponent<Animator>().SetTrigger ("deadTrigger");
ExecuteAfterTime (1f);
Destroy (gun);
}
}
}
IEnumerator ExecuteAfterTime(float time){
yield return new WaitForSeconds (time);
Destroy (gameObject);
GameObject child = gameObject.GetComponentInChildren<> (gameObject);
}
注:槍是應用腳本的玩家的孩子。
我認爲這個槍是自動垃圾收集的,當沒有更多的引用存在。所以當你的播放器死亡時,參考計數器減1。如果你沒有任何進一步的參考資料,它很快就會被扔掉。無論如何:爲什麼不叫'摧毀(孩子)'? – HimBromBeere
子對象*應該*在父對象被銷燬時自動銷燬。請用GameObject和孩子做一個簡單的測試,然後摧毀父母。孩子也應該走了。 – Programmer
該槍必須是層次視圖上的玩家的子女才能銷燬。 –