让 Child GameObject 自行销毁问题

Let Child GameObject Destroy Itself Issue

我有nGameObjects是child娘GameObject

每个 child 都有自己的 child 脚本。如果我点击一个 child object,ALL children respond.

加载 child 时,它会自动放在 parent 下,我还传递了一个数字,以便以后需要时可以跟上它。

这是我的脚本。真的没什么。有人知道我做错了什么吗?

public GameObject parentGameObject;
public int childIndex;

void Start () {
    transform.parent = parentGameObject.transform;
}

void Update () {
    if (Input.GetMouseButton(0)) {
        Die();
    }
}

public void Die () {
     Debug.Log("Child " + this.childIndex + " clicked");
     Destroy(this.gameObject);
}

由于此脚本附加到您的所有子对象,它们都在检查鼠标是否被单击,因此当检测到鼠标单击时它们都会自行销毁(因为在每个脚本中都检测到鼠标单击) .

我建议在母游戏对象中使用一个脚本,该脚本使用 Raycast 并附加 Colliders 并标记每个子对象以检测其中一个对象何时被单击,然后销毁相应的单击对象。

不清楚你是否在 2d 中,但它的例子是这样的:

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        // cast a ray at the mouses position into the screen and get information of the object the ray passes through
        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
        if (hit.collider != null && hit.collider.tag == "child") //each child object is tagged as "child"
        {
            Destroy(hit.collider.gameObject);
        }
    }
}