我进行了很多搜索,但找不到任何答案。我的问题:我实例化了一个Prefab的几个Gameobject,每个Gameobject由两个子对象组成:障碍物和计分区。当玩家触摸障碍物时,我想破坏比分区(仅针对特定实例)。因此,在运行时中,我的层次结构如下所示:
所以我需要找到一个子游戏对象(而不是“变形”)然后销毁它。我尝试了几种代码,但是没有用。这是我尝试过的三种选择的代码,但是没有一种起作用。
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由两个子对象组成:障碍物和计分区。我想破坏分数区...