【问题标题】:Destroy Game Object after a few seconds of activating child激活孩子几秒钟后销毁游戏对象
【发布时间】:2015-01-25 08:03:51
【问题描述】:

这是我的代码

void Update () 
{
    if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) 
    {
        if ( Physics.Raycast(ray, out hit, 1000f ) )
        {
            for(int i=0; i< hit.collider.transform.childCount; i++)
            {
                var child = hit.collider.transform.GetChild(i).gameObject;
                if(child != null)
                    child.SetActive(true);
            }
            hit.collider.gameObject.GetComponent<SpriteRenderer>().enabled = false;         

            //Debug.Log(hit.transform.gameObject.name);
        }
    }
}

这段代码位于我场景中的相机上。它的作用是让我触摸一个游戏对象并破坏。我接触的第一个对象是一个 2D 精灵,我关闭了它的精灵渲染器并打开了它的子精灵渲染器。

但是,一旦完成,我需要一种方法来销毁游戏对象。我真的不知道如何实现这一目标。

【问题讨论】:

  • 如果你的gameobject实现了IDisposable接口,使用Dispose方法
  • 您是否只想销毁父游戏对象而不销毁其子对象?在这种情况下,如果您像这样将 GO 渲染器设置为 false,hit.collider.gameObject.renderer.enabled = false; 必须有效。

标签: c# unity3d


【解决方案1】:

Destroy (gameObject, 5);将在 5 秒内销毁。

您也可以在 OnMouseDown() 中使用,并在更新中保留所有 for 循环和 raycast 内容

如果您确实需要 OnMouseDown(),您当然需要对象预制件上的脚本,而不是相机。

【讨论】:

  • 所以这不是这个问题的答案吗?那么这不应该在这里;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多