Unity+C#:延迟调用方法Invoke

在C#中Invoke是一个非常有用的且好用的方法,它可以在你想要的时间调用方法,也可以每隔一段时间就重复调用方法,那这个方法具体怎么用呢

下面我演示一下它的基本使用方法

 void Update()
    {
        if(Input.GetMouseButtonDown(0)){
            Debug.Log("开始运行");
            Invoke("InvokeTest",3f);

        }
    }

  void InvokeTest(){
        Debug.Log("执行Invoke");
  }

Unity+C#:延迟调用方法Invoke_第1张图片

可以看到当点击鼠标左键后控制台打印了开始运行,但是3秒后才打印了执行Invoke,这就是Invoke的基本用法。

除了Invoke还有一个InvokeRepeating,这个方法相较于Invoke多了一个参数——循环间隔时间。这个方法的作用就是像Invoke一样延迟调用一个方法,但是它还可以指定间隔多长时间重复调用一次

void Update()
    {
        if(Input.GetMouseButtonDown(0)){
            Debug.Log("开始运行");
            InvokeRepeating("InvokeTest",3f,1f);

        }
    }

void InvokeTest(){
        Debug.Log("执行Invoke");
}

Unity+C#:延迟调用方法Invoke_第2张图片

 可以看到仍然是3秒后才打印执行Invoke,然后每隔一秒又打印一次

如果想要停止的话就要用到另一个方法叫做CancelInvoke,但是这个方法只有一个参数,他只能取消所有调用某个方法的Invoke/InvokeRepeating

    void Update()
    {
        if(Input.GetMouseButtonDown(0)){
            Debug.Log("开始运行");
            InvokeRepeating("InvokeTest",3f,1f);
            Invoke("Cancel",5f);

        }
    }

    void InvokeTest(){
        Debug.Log("执行Invoke");
    }

    void Cancel(){
        CancelInvoke("InvokeTest");
    }

Unity+C#:延迟调用方法Invoke_第3张图片

 可以看到同样是InvokeRepeating,但是只调用了两次,因为第五秒的时候就被取消了

你可能感兴趣的:(unity,游戏程序)