Unity常用方法/函数(1):定时或延迟调用方法/函数

前言

做项目时碰到当一个方法(函数)调用后延迟一段时间再调用另一个方法的情况,我发现unity本身有方法可以解决这个问题,因此记录如下:

MonoBehaviour.Invoke

public void Invoke (string methodName, float time);

上述描述出自官网API说明。

在使用时可以直接使用Invoke方法,第一个参数是需要调用的方法名称,第二个参数是延迟调用的时间,单位为秒s

using UnityEngine;
using System.Collections.Generic;

public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        Invoke("LaunchProjectile", 2.0f);
    }

    void LaunchProjectile()
    {
        Debug.Log("111");
    }
}

 上面脚本的含义是启动项目后,延迟两秒调用LaunchProjectile()方法,以此类推,Invoke可以嵌套在其他方法中,比如在一个方法调用后再延迟调用另一个,可以实现类似待机屏保的效果(无操作一段时间后播放)

using UnityEngine;
using System.Collections.Generic;

public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        Invoke("LaunchProjectile0", 2.0f);
    }

    void LaunchProjectile0()
    {
        Debug.Log("111");
        Invoke("LaunchProjectile1", 2.0f);
    }
    void LaunchProjectile0()
    {
        Debug.Log("222");
    }
}

其他类似的方法还有:

MonoBehaviour.InvokeRepeating

public void InvokeRepeating (string methodName, float time, float repeatRate);

在 time 秒后调用 methodName 方法,然后每 repeatRate 秒调用一次。

注意:如果将时间刻度设置为 0,该函数不起作用。

MonoBehaviour.CancelInvoke

public void CancelInvoke ();

取消该 MonoBehaviour 上的所有 Invoke 调用。

MonoBehaviour.IsInvoking

public bool IsInvoking (string methodName);

是否有任何待处理的 methodName 调用?返回一个布尔值

参考资料:

[1] UnityEngine.MonoBehaviour - Unity 脚本 API

猜你喜欢

转载自blog.csdn.net/qq_41904236/article/details/130876417