我在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
该枪必须是层次视图上的玩家的子女才能销毁。 –