2017-09-25 135 views
0

我是一个完全初学者团结,我试图从一本书使用统一2017.1f1遵循教程。然而,当我在“//”之后来到这一行时,我遇到了一个问题,因为它在Unity中出现一个错误,表示需要访问对象引用来访问非静态成员'UnityEngine.GameObject.GetComponent()'。任何想法如何纠正它?统一更新渲染3D

public class LaunchBall : MonoBehaviour 
    { 

    public Vector3 launchBallHome = new Vector3(0.0f, 0.0f, 0.4f); 
    public float lbSpeed; 
    public bool checkLBToggle = true; 
    private Color lbColor; 
    Renderer rend; 
    bool lbJump; 

    // Use this for initialization 
    void Start() 
    { 

     gameObject.transform.position = launchBallHome; 
     lbSpeed = 0.1f; 
     lbColor = new Color(0.1f, 0.2f, 0.5f); 
// 
     rend = GameObject.GetComponent<Renderer>(); 
     lbJump = true; 
    } 
+0

什么似乎是问题?你有错误吗? – Thalthanas

+4

这不是一个“过时的命令”。这是你的一个简单的错字。它应该是'gameObject' **而不是''GameObject'。 'gameObject'是一个已经声明的变量,而'GameObject'是一个类。再次,'GameObject.GetComponent ()'应该是'gameObject.GetComponent ()'。作为一个简单的印刷错误关闭。 – Programmer

回答

-1

GetComponent<T>()是一个实例函数。如果您想获取游戏对象上的组件,只需在场景中该对象的实例上调用此方法即可。

在您的示例中,您似乎只想获取对同一游戏对象上组件的引用。那么有什么比这更简单,只需使用

rend = GetComponent<Renderer>(); 

关于“过时的命令”我相信你在每场比赛的对象上的默认renderer属性混淆。它确实已经过时,并且在某些时候会被删除。然而,它看起来并不像你使用那个属性,这很好。

+0

因为只是用“g”替换“G”应该修复它,所以我不认为只需要印刷错误就可以回答问题。评论部分应该用于帮助OP和问题关闭。顺便说一下,这个问题对未来的任何人都没有帮助。 – PassetCronUs

0

正如@Programmer说,

GameObject.GetComponent<Renderer>(); 

您正在试图从游戏对象类的组件渲染器。 什么,而不是你应该做的是:

gameObject.GetComponent<Renderer>(); 

这将拿到剧本附着在游戏对象的组件渲染器。

注意:GameObject是一个类。 gameObject是一个变量,它引用当前脚本所附的gameobject。

+0

我不认为需要用印刷错误来回答问题,因为简单地用“g”替换“G”应该修复它。评论部分应该用于帮助OP和问题关闭。顺便说一下,这个问题对未来的任何人都没有帮助。 – PassetCronUs