错误销毁对象

时间:2014-09-27 07:15:46

标签: c# unity3d

public class NewBehaviourScript : MonoBehaviour 
{   
    private string hitobject;

    void Update () {
        if (Input.GetButtonUp ("Jump")) {
            Debug.Log("SPACE");
            Rigidbody r = GameObject.Find("trigger").AddComponent<Rigidbody>();
            r.mass = 3f;
        }
    }
    void OnCollisionEnter(Collision myCollision)
    {
        hitobject = myCollision.gameObject.tag;
        if (hitobject == "wall")
        {
            Destroy(hitobject);
        }
    }
}

问题是什么?

错误说:

  

Assets / NewBehaviourScript.cs(20,25):错误CS1502:最好的重载   方法匹配`UnityEngine.Object.Destroy(UnityEngine.Object)&#39;具有   一些无效的论点

     

Assets / NewBehaviourScript.cs(20,25):错误CS1503:参数#1' cannot convert字符串&#39;表达式以输入`UnityEngine.Object&#39;

2 个答案:

答案 0 :(得分:2)

您正在尝试销毁代码而不是游戏对象。

你可以这样解决:

void OnCollisionEnter(Collision myCollision)
{
    GameObject g = myCollision.gameObject;        

    if(g.tag == "wall")
       Destroy(g);
}

答案 1 :(得分:0)

我们将string更改为gameobject,因此我们可以销毁游戏对象而不是字符串并使用其标签之一(vars)来检查我们的搜索内容

 private GameObject hitobject ; 
 void OnCollisionEnter(Collision myCollision)
 {
   hitobject = myCollision.gameObject;
    if (hitobject.tag == "wall")
      {
       Destroy(hitobject);
      }

}