首页 > 解决方案 > InvokeRepeating 生成太多游戏对象

问题描述

我在 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);
    }

}

标签: unity3dgame-development

解决方案


你开始一个新的每一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);
}

推荐阅读