为什么当向前移动物体时它们移动得非常慢?我怎样才能改变速度?

时间:2016-10-05 23:13:42

标签: c# unity3d

Update函数中: UpdateSpheres创建对象然后移动它们,但它们移动速度很慢。

private void Update()
{
    UpdateSpheres();
    MoveShips();
}

private void MoveShips()
{
    var spheres = GameObject.FindGameObjectsWithTag("MySphere");
    foreach (Transform child in spheres[0].transform) 
    {
        child.transform.position += Vector3.forward * Time.deltaTime;
    }
}

1 个答案:

答案 0 :(得分:4)

在每一帧中调用FindGameObjectsWithTag非常慢。在Start函数中调用一次。还可以添加一个可用于多个的公共速度变量来更改速度。您可以从编辑器修改此速度变量,直到获得所需的速度。请务必查看脚本的其余部分,确保您未在​​GameObject.Find函数中使用FindGameObjectsWithTagUpdate或类似函数。

GameObject[] spheres;
public float moveSpeed = 50;

void Start()
{
    spheres = GameObject.FindGameObjectsWithTag("MySphere");
}

private void Update()
{
    UpdateSpheres();
    MoveShips();
}

private void MoveShips()
{
    foreach (Transform child in spheres[0].transform)
    {
        child.transform.position += Vector3.forward * Time.deltaTime * moveSpeed;
    }
}