我正在学习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;
}
}
答案 0 :(得分:1)
对于初学者,我建议您按照C#上的一些基本教程进行操作,因为您似乎还没有正确理解它。只是学习基础知识应该最多花几天时间,但是你可以很容易地通过自己解决这个问题。
现在让我们来看看你实际上做错了什么。
您定义的第一个变量是。
private object rb;
这有4个部分
这是一个适当的变量声明,所以这很好。
现在,第二个变量声明似乎错过了很多。
private Rigidbody
由于您只想要Rigidbody
开头,我们可以将2个变量合并为1个变量。
private Rigidbody rb;
现在我们有一个完整的变量,我们可以使用它。因为我们没有更改rb
,所以我们不需要更改任何其他代码!