让 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);
}
}
}
我有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);
}
}
}