如何销毁在Unity中实例化的GameObject?

时间:2020-10-28 02:29:51

标签: c# unity3d

我有一个代码可以生成2个GameObject,它们是2个预制件,一个敌人预制件和一个玩家预制件的副本:

        GameObject PlayerGO =player;
        playerUnit = PlayerGO.GetComponent<Unit>();
        Instantiate(player, PlayerStation);
        GameObject EnemyGO = Instantiate(enemy, EnemyStation);
        enemyUnit = EnemyGO.GetComponent<Unit>();

这些克隆分别称为“ PlayerGO”和“ EnemyGO”。

现在,代码的想法是,当一场战斗开始时,玩家和敌人都会在自己的位置产生并进行战斗,但是,当我进入另一场战斗时,问题就来了,因为第一场战斗的敌人仍然在那里,不仅如此,而且现在我必须同时面对玩家。我尝试使用此代码:

Destroy(enemy);

要摆脱对象,但它只会破坏敌人对象的原始实例,而不是仍然位于层次结构中的克隆。我尝试使用Destroy(EnemyGO),但代码不允许我这样做,并建议改用“敌人”(至此,不起作用),我也尝试了“ Destroy(Instantiate(enemy,EnemyStation));”。 ,但这也不起作用

如何销毁克隆?

1 个答案:

答案 0 :(得分:0)

在敌人的预制板上,准备一个可以通过拥有Destroy(gameObject)来消灭自己的剧本。如果敌人检测到碰撞,则触发脚本。如果要让播放器触发脚本,请使用yourGameobjectVariableToTheEnemy.GetComponent(SelfDestruct)().selfDestruct(第一个SelfDesruct是脚本名称,第二个是函数名称)。