问题描述
我知道这个问题很多,但是它是一个非常广泛的错误,因此我需要一些有关如何使vector3保持静态的帮助。
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);
}
}
}
该错误适用于第一个代码和'Grid.GridScan(Vector3)。第一个代码在创建时会附加到许多游戏对象上。如何使vector3(transform.position)静态?
解决方法
该错误是因为GridScan方法不是静态的,您需要在特定的网格上调用它。您可以添加static modifier使其变为静态。
或者,您可以将Grid设为单例,这意味着具有指向当前网格的静态属性。在Unity中,您也可以使用FindObjectOfType在场景中进行搜索,但这是一项昂贵的操作。它必须遍历场景中的所有对象才能找到您的脚本,这比获得静态属性要昂贵得多。