销毁c#/ Unity中的预制对象的特定子对象

问题描述 投票:-2回答:1

我进行了很多搜索,但找不到任何答案。我的问题:我实例化了一个Prefab的几个Gameobject,每个Gameobject由两个子对象组成:障碍物和计分区。当玩家触摸障碍物时,我想破坏比分区(仅针对特定实例)。因此,在运行时中,我的层次结构如下所示:

  • -ObjectPrefab(clone)
  • -Scorezone
  • -障碍
  • -ObjectPrefab(Clone)
  • -Scorezone
  • -障碍
  • ...

所以我需要找到一个子游戏对象(而不是“变形”)然后销毁它。我尝试了几种代码,但是没有用。这是我尝试过的三种选择的代码,但是没有一种起作用。

private void OnCollisionEnter2D(Collision2D collision) {

if (collision.gameObject.tag == "obstacle") {

替代1:

Destroy(GameObject.FindWithTag("scorezone"));

替代项1确实很接近,但它破坏了所有实例化对象的所有得分区。

替代2:

Destroy(collision.gameObject.transform.parent.gameObject.FindWithTag("scorezone"));

备选方案2对我来说听起来很合理,但我收到错误消息“转换不包含“ FindWithTag”的定义。

替代3:

foreach (Transform child in collision.gameObject.transform)
  {
   if (child.tag == "scorezone")
      {
        Destroy(child.gameObject);
      }
  }

}

替代3不会给出错误,但是当玩家撞到障碍物时实际上什么也没做。

我非常感谢您的帮助,在此先谢谢您!

我进行了很多搜索,但找不到任何答案。我的问题:我实例化了一个Prefab的几个Gameobject,每个Gameobject由两个子对象组成:障碍物和计分区。我想破坏分数区...

unity3d parent-child collision-detection destroy
1个回答
0
投票

存储参考!

© www.soinside.com 2019 - 2024. All rights reserved.