C# CS0120非静态字段需要对象引用
我知道这是问了很多,但它是一个非常广泛的错误,所以我需要一些帮助,如何使我的矢量3静态C# CS0120非静态字段需要对象引用,c#,unity3d,C#,Unity3d,我知道这是问了很多,但它是一个非常广泛的错误,所以我需要一些帮助,如何使我的矢量3静态 void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Grid.GridScan(transform.position); } } 从这里调用“GridScan”: public void GridScan(Vector3 worldposition)
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Grid.GridScan(transform.position);
}
}
从这里调用“GridScan”:
public void GridScan(Vector3 worldposition)
{
Debug.Log(GetValue(worldposition));
if ((GetValue(worldposition)) == 100)
{
if (Neighbours(worldposition, 2) < 2)
{
SetValue(worldposition, 0);
}
if ((Neighbours(worldposition, 2)) > 3)
{
SetValue(worldposition, 0);
}
}
if ((GetValue(worldposition)) == 0)
{
if (Neighbours(worldposition, 2) == 3)
{
SetValue(worldposition, 100);
}
}
}
public void GridScan(Vector3 worldposition)
{
Log(GetValue(worldposition));
如果((GetValue(worldposition))==100)
{
if(邻居(世界位置,2)<2)
{
设置值(世界位置,0);
}
如果((邻居(世界排名,2))>3)
{
设置值(世界位置,0);
}
}
如果((GetValue(worldposition))==0)
{
if(邻居(世界位置,2)==3)
{
设定值(世界位置,100);
}
}
}
第一个代码和“Grid.GridScan(Vector3)”的错误。第一个代码在创建时附加到许多游戏对象。如何使vector3(transform.position)保持静态?错误是因为GridScan方法不是静态的,您需要在特定的网格上调用它。您可以添加使其成为静态的
或者,您可以将网格设置为单例,这意味着具有指向当前网格的静态属性。在Unity中,您还可以使用在场景中搜索它,但是这是一个昂贵的操作。它必须遍历场景中的所有对象才能找到脚本,这比获取静态属性要昂贵得多。是
Grid
所属类的实例吗?public static void GridScan
?John,Grid是包含函数Gridscan的脚本。静态修饰符不起作用,因为函数Gridscan使用其他非静态变量和需要保持非静态的函数。在这种情况下,单例是否有效?是的,所以在网格内部,您可以创建一个静态当前
网格变量。在网格的唤醒或合一中,您分配它,并在其他任何地方使用它。这是一种可接受的方法,当您有一种类型的组件,您想在许多不同的地方使用。感谢您这么快回复,我是非常新的,非常感谢。我现在使用什么样的变量(int,float)?有很多文章比我解释得更好,例如:静态变量应该是网格,你用它来获得场景中的一个网格。所以类型应该是Grid。