c# - 如何销毁我在 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));” ,但这也没有用
我怎样才能摧毁克隆?
解决方案
在敌人的预制件中,有一个脚本,通过拥有Destroy(gameObject)
. 如果敌人检测到碰撞,则触发脚本。如果您希望播放器触发脚本然后使用yourGameobjectVariableToTheEnemy.GetComponent(SelfDestruct)().selfDestruct
(第一个 SelfDesruct 是脚本名称,第二个是函数名称)。
推荐阅读
- google-sheets - 删除重复项时谷歌表格查询
- processing - 如何为 Kinect 生成的点云添加颜色?
- javascript - 以流畅的方式显示 div
- javascript - 如何使用 onMouseHover 更改跨度状态?
- gradle-kotlin-dsl - Maven 发布自动时间戳
- dask - 无法从 jupyter 实验室启动新的 dask SLURM 集群 - “没有名为‘dask_jobqueue’的模块”
- symfony - Symfony 4 中使用 po/mo 文件的翻译(复数)
- python - 如何使用 Keras 模型 predict() 函数进行多处理?
- ruby-on-rails - Ruby:如何将多个 JSON 对象的值相加为一个对象?
- python - 将包含变量的表达式附加到 Python 中的列表