正如您所看到的,我正在尝试创建一个存储游戏对象位置的vector3变量,我收到以下错误:
字段初始值设定项不能引用非静态字段,方法或 属性
我尝试将游戏对象变成静态变量,但后来我在Unity中又出现了另一个错误:
NullReferenceException:未将对象引用设置为的实例 对象
我该如何解决这个问题?
public GameObject playerobject;
private Vector3 playerposition = playerobject.transform.position;
答案 0 :(得分:2)
您必须在函数中初始化playerposition
而不是声明它的位置。 Start
或Awake
函数适用于此。如果您需要每帧更新playerposition
变量,请在Update
函数中执行此操作。这样做的原因是,用于初始化另一个变量在之外的函数的变量必须是static
或const
变量。
我确定您不希望playerobject
为static
或const
,因为您想在编辑器中分配它,因此在函数中执行此操作是正确的这样做的方法。
public GameObject playerobject;
private Vector3 playerposition;
void Awake()
{
playerposition = playerobject.transform.position;
}
之后,请确保将对象应用于编辑器中的playerobject
插槽。