CS0120非静态字段需要对象引用

问题描述

我知道这个问题很多,但是它是一个非常广泛的错误,因此我需要一些有关如何使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在场景中进行搜索,但这是一项昂贵的操作。它必须遍历场景中的所有对象才能找到您的脚本,这比获得静态属性要昂贵得多。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...