📅  最后修改于: 2023-12-03 14:48:12.871000             🧑  作者: Mango
在Unity中,调用函数是一个非常常见的操作。有时候,需要定期执行某个函数,例如每秒检查玩家状态或每帧更新一些内容。本文将介绍如何在Unity中使用C#编写代码来每x秒调用某个函数。
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: ”和当前的时间。
除了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秒调用某个函数。