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

问题描述:

我有一个游戏的统一代码,假设游戏对象标签名称为“玩家”,假设该游戏遵循该字符。但我得到一个代码错误,我不知道如何解决它。需要对象引用才能访问非静态成员`UnityEngine.GameObject.tag'

错误

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); 
      } 
} 
} 
+0

为什么不直接使用内置的相机SmoothFollow.js脚本或iTween?两者都符合要求,你只需要稍微修改它。 iTween无处不在。 – ApolloSoftware 2015-02-07 07:45:20

+0

您是否还将脚本附加到主摄像头,您想要的对象?如果将该脚本附加到相机,那么GameObject是本地的,它只会检测本地对象是否标记为播放器。如果它在玩家身上,那么对象的位置正在改变。脚本有很多错误,特别是没有足够的信息来制定适当的响应。 – ApolloSoftware 2015-02-07 07:51:32

你为什么不只是使用内置的摄像头SmoothFollow.js脚本或的ITween?两者都符合要求,你只需要稍微修改它。 iTween无处不在。

你还将脚本附加到主摄像头,你想要的对象?如果将该脚本附加到相机,那么GameObject是本地的,它只会检测本地对象是否标记为播放器。如果它在玩家身上,那么对象的位置正在改变。脚本有很多错误,特别是没有足够的信息来制定适当的响应。

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

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); 
    } 

} 

您需要使用gameObject.tag而不是GameObject.tag