我无法将游戏对象的位置变为vector3变量

时间:2018-06-10 09:46:03

标签: c# unity3d

正如您所看到的,我正在尝试创建一个存储游戏对象位置的vector3变量,我收到以下错误:

  

字段初始值设定项不能引用非静态字段,方法或   属性

我尝试将游戏对象变成静态变量,但后来我在Unity中又出现了另一个错误:

  

NullReferenceException:未将对象引用设置为的实例   对象

我该如何解决这个问题?

public GameObject playerobject;

private Vector3 playerposition = playerobject.transform.position;

1 个答案:

答案 0 :(得分:2)

您必须在函数中初始化playerposition而不是声明它的位置。 StartAwake函数适用于此。如果您需要每帧更新playerposition变量,请在Update函数中执行此操作。这样做的原因是,用于初始化另一个变量之外的函数的变量必须是staticconst变量。

我确定您不希望playerobjectstaticconst,因为您想在编辑器中分配它,因此在函数中执行此操作是正确的这样做的方法。

public GameObject playerobject;
private Vector3 playerposition;

void Awake()
{
    playerposition = playerobject.transform.position;
}

之后,请确保将对象应用于编辑器中的playerobject插槽。