【问题标题】:Unity 2D: How to destroy just one prefab clone when clicked onUnity 2D:单击时如何仅销毁一个预制克隆
【发布时间】:2014-08-14 13:57:47
【问题描述】:

所以我有一个问题:D。我创建了一个简单的脚本,当单击屏幕时,它将在鼠标坐标上实例化一个球的预制件。然后我继续创建了第二个脚本。在第二个脚本中,它附加在一个球的预制件上,我测试了鼠标点击,当发生这种情况时,我删除了一个 GameObject 球。我将球预制件分配给 GameObject 变量球。唯一的问题是(这也是为什么这不是一个重复问题的原因,至少我希望..)当我点击球时,它会删除所有球。我知道它正在发生,因为它们基本上都只是一个预制件。我想我会通过为每个预制 cline 指定单独的名称然后按名称删除它们来解决它,但是我很漂亮的海岸统一有一个更好的解决方案。我不介意 javascript 或 c# 解决方案,谢谢!

PS:我使用的是 Destroy 方法。

【问题讨论】:

    标签: unity3d destroy


    【解决方案1】:

    听起来您在听第二个脚本中的鼠标点击,但没有检查您是否在点击球。相反,您应该通过投射光线来检查鼠标是否正在击中您的球。

    if (Input.GetMouseButtonDown(0)) 
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if(Physics.Raycast(ray,out hit))
        {
            if(hit.collider.gameObject==gameObject) Destroy(gameObject);
        }
    }
    

    edit-> 用于 unity2d:

    if (Input.GetMouseButtonDown(0)) 
    {
       RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
    
       if(hit.collider != null)
      {
            if(hit.collider.gameObject==gameObject) Destroy(gameObject);
      }
    }
    

    【讨论】:

    • 哦,对不起,谢谢,我的误会,对不起!
    • 好的,我试过用这个。它第一次工作,但在统一重启后失败了。不再工作它得到鼠标点击(通过打印方法测试)但不是 if(Phy... 我使用统一 2D
    • 你的球上有对撞机吗?
    【解决方案2】:

    我遇到了这个问题,但在我的情况下,我有一个 GameObject[] 数组并在该数组中选择一些项目,然后克隆它并随机显示它...

    我遇到这种情况是因为我有一个 GameObject 数组,并在想我应该如何具体销毁它,因为如果我使用循环它会按顺序销毁...

    有一个关于如何销毁的教程......来自 Jay AnAm 的视频

    void Update(){
        if(Input.GetMouseButtonDown(0)){
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            if(Physics.Raycast(ray, out hit)){
    
                BoxCollider bc = hit.collider as BoxCollider;
                if(bc != null){
                    Destroy (bc.gameObject);
                }
            }
        }
    

    确保将盒子碰撞器的组件添加到游戏对象中。

    查看此链接https://www.youtube.com/watch?v=2tknfsylens

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多