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

时间:2015-02-07 07:18:03

标签: c# unity3d

我有一个游戏的统一代码,如果游戏对象标签名称为“玩家”,则假设该游戏遵循该角色。但我收到代码错误,我不知道如何解决它。

错误

Assets/Script/CameraRunner.cs(10,32): error CS0120: An object reference   
is required to access non-static member `UnityEngine.GameObject.tag'

脚本

using UnityEngine;
using System.Collections;

public class CameraRunner : MonoBehaviour {



void FixedUpdate () 
{
    if (GameObject.tag == "Player") {
                    transform.position = new Vector3 (0, transform.position.y + 9f, -10);
            }
}
}

2 个答案:

答案 0 :(得分:2)

您需要使用gameObject.tag代替GameObject.tag

答案 1 :(得分:0)

为什么不直接使用内置摄像头SmoothFollow.js脚本或iTween?两者都做了所需的,你只需稍微修改它。 iTween无处不在。

您是否还将脚本附加到主摄像机,您想要的对象?你将这个脚本附加到哪里,如果它被分配给Camera,那么GameObject是本地的,它只检测本地对象是否被标记为Player。如果它在播放器上,则对象的位置正在改变。脚本有很多错误,特别是没有足够的信息来形成正确的响应。

在修复脚本的过程中,执行以下操作并将其附加到相机。另外,如果不这样做,请不要忘记设置播放器变量并设置标签。

using UnityEngine;
using System.Collections;

public class CameraRunner : MonoBehaviour {
public GameObject player;

  void Start () {
    if (player == null)
      player = GameObject.FindWithTag("Player");
  }

  void FixedUpdate () {
    if (player != null)
    transform.position = new Vector3 (0, player.transform.position.y + 9f, -10);
  }

}