InvokeRepeating生成太多GameObjects

问题描述 投票:0回答:1

我在Unity中使用了Invoke Repeating方法,该方法应该每两秒钟生成一个多维数据集,但是一旦经过一秒钟,就会生成许多多维数据集。我该如何解决这个错误?

public class BallsGenerator : MonoBehaviour
{
    public GameObject cube;


    // Update is called once per frame
    void Update()
    {
        InvokeRepeating("generateCube", 1.0f, 2.0f);
    }

    private void generateCube()
    {
        Vector3 genPosition = new Vector3(Random.Range(-111, 823), 728, 378);
        Quaternion startRotation = new Quaternion(Random.Range(-180, 180), Random.Range(-180, 180), Random.Range(-180, 180), 0);
        Instantiate(cube, genPosition, startRotation);
    }

}

unity3d game-development
1个回答
1
投票

您在InvokeRepeating中开始新的Update 每帧

因此,一旦延迟第一次通过,您将获得每帧一个对象;)


您应该只这样做一次例如

private void Start()
{
    InvokeRepeating("generateCube", 1.0f, 2.0f);
}

private void generateCube()
{
    Vector3 genPosition = new Vector3(Random.Range(-111, 823), 728, 378);
    Quaternion startRotation = new Quaternion(Random.Range(-180, 180), Random.Range(-180, 180), Random.Range(-180, 180), 0);
    Instantiate(cube, genPosition, startRotation);
}
© www.soinside.com 2019 - 2024. All rights reserved.