语法:'x'是'变量',但用作'方法'

时间:2015-06-14 07:05:53

标签: c# variables methods unity3d

public GameObject explosionPrefab;

void OnCollisionEnter(Collision otherObj) {
    GameObject explosionObject = Instantiate(explosionPrefab, otherObj.transform.position, Quaternion.identity) as GameObject;
    explosionObject(explosionObject, 5f); <-- THE LINE GIVING ERROR
    Destroy(otherObj.gameObject);
    }
}

我很困惑,因为我没有那么长时间做脚本,并且想知道是否有人可以告诉我正确的方法来做这件事,这是一个团结的小测试游戏。只是想知道这是如何修复的,以便我将来不会犯这个错误。

2 个答案:

答案 0 :(得分:2)

一般

方法声明:

void x() {
    // do something
}

对该方法的调用:

x();

变量声明:

int x = 0;

使用变量:

x = 7; //write
y = x; //read and assing to another variable

您的代码

您声明了一个变量:

GameObject explosionObject = Instantiate(explosionPrefab, otherObj.transform.position, Quaternion.identity) as GameObject;

但是你使用喜欢方法:

 explosionObject(explosionObject, 5f); <-- THE LINE GIVING ERROR

如果要调用GameObject实例的方法,可能会错过方法名称?例如:

 explosionObject.MyMethod(explosionObject, 5f);

或者你可以为你的实例和另一个方法使用相同的名称,然后尝试更改你的GameObject实例的名称:

GameObject game = Instantiate(explosionPrefab, otherObj.transform.position, Quaternion.identity) as GameObject;
explosionObject(game, 5f);

答案 1 :(得分:1)

问题非常明确,让我们来看看下面的代码:

explosionObject(explosionObject, 5f);

此处您已将explosionObject声明为GameObject变量,并且您使用的方法名称与此问题的原因相同。更改变量名称或函数名称,您的问题就会得到解决。