&#34 ;;"无效的令牌和速度不是定义的"对象"

时间:2016-12-09 03:49:04

标签: c# unity3d token

我正在学习Unity,我已经开始了第二个教程" Space Shooter"。该教程是在以前的引擎版本上设计的,现在它已经过时了。他们为代码提供了一个新的修复程序,如下所述。

  

"在Unity 5及更高版本中,我们无法再使用“速记辅助引用”访问组件,我们必须使用“GetComponent”直接访问它们。这方面的一个例子是访问与脚本相同的GameObject附加的Rigidbody组件。

     

在Unity 4及更早版本中,只需使用“刚体”即可访问。现在必须使用“GetComponent()。”

     

当脚本实例初始化时,找到此Component通常是“最佳实践”,并在局部变量中“缓存”引用。

     

这通常写成:

private Rigidbody;

void Start ()
{
    rb = GetComponent<Rigidbody>();
}
     

现在,通过引用保存在变量“rb”中的本地Rigidbody组件,我们可以在脚本中的任何位置使用此引用。&#34;

以下是我的代码和我尝试更改原始代码以确定简单的玩家移动。我不知道他们是如何要我修复它的,因为这实际上是我第二次接触编码。我被僵硬的人窒息了#34 ;;&#34; token和rb.velocity部分。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private object rb;
    private Rigidbody

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3 (moveHorizontal, 0.0f,moveVertical);
        rb.velocity = movement;
    }
}

1 个答案:

答案 0 :(得分:1)

对于初学者,我建议您按照C#上的一些基本教程进行操作,因为您似乎还没有正确理解它。只是学习基础知识应该最多花几天时间,但是你可以很容易地通过自己解决这个问题。

现在让我们来看看你实际上做错了什么。

您定义的第一个变量是。

private object rb;

这有4个部分

  • 访问修饰符(私有)
  • 类型(对象)
  • 姓名(rb)
  • 行结尾(;)

这是一个适当的变量声明,所以这很好。

现在,第二个变量声明似乎错过了很多。

private Rigidbody

由于您只想要Rigidbody开头,我们可以将2个变量合并为1个变量。

private Rigidbody rb;

现在我们有一个完整的变量,我们可以使用它。因为我们没有更改rb,所以我们不需要更改任何其他代码!