【问题标题】:update render in unity 3D在统一 3D 中更新渲染
【发布时间】:2017-09-25 16:22:27
【问题描述】:

我完全是一个 Unity 初学者,我正在尝试使用 unity 2017.1f1 遵循书中的教程。但是,当我来到“//”之后的行时,我遇到了一个问题,因为它在 Unity 中出现了一个错误,提示需要对象引用才能访问非静态成员“UnityEngine.GameObject.GetComponent()”。任何想法如何纠正它?

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

【问题讨论】:

  • 似乎是什么问题?你有错误吗?
  • 这不是一个“过时的命令”。这是你一个简单的错字。它应该是gameObject 不是 GameObjectgameObject 是一个已经声明的变量,而 GameObject 是一个类。同样,GameObject.GetComponent&lt;Renderer&gt;() 应该是 gameObject.GetComponent&lt;Renderer&gt;()。因一个简单的印刷错误而关闭。

标签: c# visual-studio unity3d


【解决方案1】:

正如@Programmer 所说,

 GameObject.GetComponent<Renderer>();

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

 gameObject.GetComponent<Renderer>();

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

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

【讨论】:

  • 我认为没有必要仅以印刷错误来回答问题,因为只需将“G”替换为“g”即可解决问题。应该使用评论部分来帮助 OP 并关闭问题。顺便说一句,这个问题将来对任何人都没有帮助。
【解决方案2】:

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

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

rend = GetComponent<Renderer>();

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

【讨论】:

  • 我认为没有必要仅以印刷错误来回答问题,因为只需将“G”替换为“g”即可解决问题。应该使用评论部分来帮助 OP 并关闭问题。顺便说一句,这个问题以后对任何人都没有帮助。
猜你喜欢
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 2020-12-25
  • 1970-01-01
  • 2015-05-21
  • 2016-12-30
相关资源
最近更新 更多