访问非静态成员`UnityEngine.Transform.position'需要对象引用

时间:2016-05-19 20:30:55

标签: c#

我尝试使用此脚本更改摄像头位置但是我收到错误 Assets / Scripts / ChangeView.cs(15,35):错误CS0120:访问非静态成员需要对象引用UnityEngine.Transform.position'

我是团结和C#的新手。

using UnityEngine;
using System.Collections;

public class ChangeView : MonoBehaviour {

    private bool view;
    private Transform trans;
    void Start () {
        view = true;
        trans = GetComponent<Transform> ();
    }
    public void ChangeCamera () {
        if (view == true) {
            view = false;
            Transform.position = new Vector3 (0.0f, 5f, -5f);
        }
        else {
            view = true;
            Transform.position = new Vector3 (0.0f, 1f, -1f);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

不要使用实际的Transform类,使用trans。 (我假设你在检查员中指定了这个)

所以你需要

trans.position = Vector3.MoveTowards()或 trans.position = new Vector3()

问题是你正在试图操纵Transform,好像它是一个静态类,你根本就没有在逻辑中引用trans。

编辑:此外,如果您可以从检查器分配变量,那么最好使用GetComponent。在您的情况下,由于它继承了monobehaviour,您已经可以通过以下

进行转换

gameObject.transform.position

或只是

转换位置

除非另一个对象为Transform,否则无需为Transform创建私有变量。