📜  unity 每 x 秒调用一次函数 - C# (1)

📅  最后修改于: 2023-12-03 14:48:12.871000             🧑  作者: Mango

Unity每x秒调用一次函数 - C#

在Unity中,调用函数是一个非常常见的操作。有时候,需要定期执行某个函数,例如每秒检查玩家状态或每帧更新一些内容。本文将介绍如何在Unity中使用C#编写代码来每x秒调用某个函数。

使用InvokeRepeating方法

Unity提供了InvokeRepeating方法,可以在指定时间间隔内重复调用函数。该方法需要三个参数:函数名称、调用时间(秒)和重复调用的时间(秒)。可以在Monobehaviour脚本中使用InvokeRepeating来实现每x秒调用某个函数的目的。

using UnityEngine;
using System.Collections;

public class MyClass : MonoBehaviour {
    public float repeatTime = 1f; // the time interval between calls
    void Start () {
        InvokeRepeating ("MyFunction", 0f, repeatTime);
    }

    void MyFunction () {
        Debug.Log ("MyFunction is called at: " + Time.time);
    }
}

在上面的示例中,我们定义了MyFunction函数并使用InvokeRepeating方法来在每秒调用一次该函数。当脚本被启用时,Start()函数会被调用,并调用InvokeRepeating函数来每秒调用MyFunction()函数。在MyFunction()函数中,我们使用Debug.Log()来打印“ MyFunction is called at: ”和当前的时间。

使用Coroutine方法

除了InvokeRepeating方法,还可以使用Coroutine方法实现每x秒调用某个函数的目的。Coroutine是Unity中的一种协程,可以让函数在不中断整个游戏进程的情况下执行一段时间。可以通过在Monobehaviour脚本中使用StartCoroutine()函数来启动协程。

using UnityEngine;
using System.Collections;

public class MyClass : MonoBehaviour {
    public float repeatTime = 1f; // the time interval between calls
    IEnumerator Start () {
        while (true) {
            yield return new WaitForSeconds (repeatTime);
            MyFunction ();
        }
    }

    void MyFunction () {
        Debug.Log ("MyFunction is called at: " + Time.time);
    }
}

在上面的示例中,我们使用了Coroutine来实现每秒调用MyFunction()函数的目的。在Start()函数中,使用while(true)和yield return new WaitForSeconds(repeatTime)来将程序暂停1秒钟,并调用MyFunction()函数。在MyFunction()函数中,我们使用Debug.Log()来打印“ MyFunction is called at: ”和当前的时间。

总结

总的来说,InvokeRepeating和Coroutine都是可行的方法来每秒调用某个函数。InvokeRepeating方法比较简单,但是不能暂停或停止,需要等待指定的时间才能重复调用。Coroutine方法比较灵活,可以暂停和停止,但是需要较多的代码。根据场景需求,选择不同的方法来实现每x秒调用某个函数。