更新渲染统一3D

时间:2017-09-25 08:00:26

标签: c# visual-studio unity3d

我是一个完全合一的初学者,我试图遵循使用团结2017.1f1的书中的教程。但是,当我来到" //"之后的行时,我遇到了一个问题,因为Unity中出现了一个错误,说明需要一个对象引用才能访问非静态成员' UnityEngine .GameObject.GetComponent()&#39 ;.任何想法如何纠正它?

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

2 个答案:

答案 0 :(得分:0)

正如@Programmer所说,

 GameObject.GetComponent<Renderer>();

您正在尝试从GameObject类中获取组件渲染器。 你应该做的是:

 gameObject.GetComponent<Renderer>();

将获得附加脚本的游戏对象的组件渲染器。

注意:GameObject是一个类。 gameObject是一个变量,它引用当前脚本附加的游戏对象。

答案 1 :(得分:-1)

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

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

rend = GetComponent<Renderer>();

关于'过时的命令',我相信你会对每个游戏对象的默认renderer属性感到困惑。它确实已经过时,并且在某些时候会被删除。但是看起来你并没有使用那个属性,这很好。