C# 销毁对象时出错 公共类NewBehaviourScript:MonoBehavior { 私有字符串对象; 无效更新(){ if(Input.GetButtonUp(“跳转”)){ Debug.Log(“空间”); 刚体r=GameObject.Find(“触发器”).AddComponent(); r、 质量=3f; } } 无效碰撞中心(碰撞) { hitobject=myCollision.gameObject.tag; 如果(hitobject==“墙”) { 摧毁(目标); } } }

C# 销毁对象时出错 公共类NewBehaviourScript:MonoBehavior { 私有字符串对象; 无效更新(){ if(Input.GetButtonUp(“跳转”)){ Debug.Log(“空间”); 刚体r=GameObject.Find(“触发器”).AddComponent(); r、 质量=3f; } } 无效碰撞中心(碰撞) { hitobject=myCollision.gameObject.tag; 如果(hitobject==“墙”) { 摧毁(目标); } } },c#,unity3d,C#,Unity3d,有什么问题吗 void OnCollisionEnter(Collision myCollision) { GameObject g = myCollision.gameObject; if(g.tag == "wall") Destroy(g); } 错误是: void OnCollisionEnter(Collision myCollision) { GameObject g = myCollision.gameObject;

有什么问题吗

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

    if(g.tag == "wall")
       Destroy(g);
}
错误是:

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

    if(g.tag == "wall")
       Destroy(g);
}
Assets/NewBehaviourScript.cs(20,25):错误CS1502:最佳重载 已找到“UnityEngine.Object.Destroy(UnityEngine.Object)”的方法匹配项 一些无效的参数

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

    if(g.tag == "wall")
       Destroy(g);
}
Assets/NewBehaviourScript.cs(20,25):错误CS1503:参数
#1'
无法将
string”表达式转换为类型“UnityEngine.Object”

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

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

您正在尝试销毁标签而不是游戏对象

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

    if(g.tag == "wall")
       Destroy(g);
}
您可以这样修复它:

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);
        }
    }
}
void OnCollisionEnter(Collision myCollision)
{
    GameObject g = myCollision.gameObject;        

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

我们将
string
更改为
gameobject
,这样我们就可以销毁不是字符串的gameobject,并使用标记它的一个属性(vars)来检查我们点击了什么

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

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

那不行,
私有字符串命中对象,不能将游戏对象存储在字符串中。