首页 > 解决方案 > 如何销毁我在 Unity 中实例化的游戏对象?

问题描述

我有一个代码生成 2 个游戏对象,它们是 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) 但代码不允许我这样做,并建议使用“enemy”代替(这不起作用),我也尝试使用“Destroy(Instantiate(enemy, EnemyStation));” ,但这也没有用

我怎样才能摧毁克隆?

标签: c#unity3d

解决方案


在敌人的预制件中,有一个脚本,通过拥有Destroy(gameObject). 如果敌人检测到碰撞,则触发脚本。如果您希望播放器触发脚本然后使用yourGameobjectVariableToTheEnemy.GetComponent(SelfDestruct)().selfDestruct(第一个 SelfDesruct 是脚本名称,第二个是函数名称)。


推荐阅读