如何解决“访问非静态成员需要对象引用”

时间:2019-04-05 18:43:39

标签: c# unity3d

我不断收到此错误:

  

Assets / PlayerScript.cs(220,35):错误CS0120:对象引用为   需要访问非静态成员“ Generate.seed”

使用以下代码:

using (StreamWriter sw = new StreamWriter("file.txt"))
{
    sw.WriteLine(Generate.seed);
}

我在Generate.cs中声明:

 public int seed;

1 个答案:

答案 0 :(得分:1)

您可以使用对Generate实例的对象引用

在Unity中,您通常可以使用例如通过检查器获取

// in the Inspector reference the according component via
// drag&drop the object to this field
public Generate GenerateReference;

或使用GetComponent(如果组件已连接到同一对象)

var GenerateReference = GetComponent<Generate>();

或者是否在其他物体上

var GenerateReference = anotherObjectReference.GetComponent<Generate>();

当然,现在您必须先获得anotherObjectReference

比您使用GenerateReference.seed还要好。

另请参阅Controlling GameObjects using components


或者将seed设为

public static int seed;

为了将其转换为非实例成员,本身就是类型Generate的成员,并继续使用Generate.seed。用简单的话来说,所有Generate组成的share都具有相同的seed值。